[EVENTLOG]
[reactos.git] / reactos / base / services / eventlog / rpc.c
index faac460..99f8d72 100644 (file)
@@ -162,6 +162,8 @@ ElfCreateBackupLogHandle(PLOGHANDLE *LogHandle,
     Status = LogfCreate(&lpLogHandle->LogFile,
                         NULL,
                         FileName,
+                        0,
+                        0,
                         FALSE,
                         TRUE);
     if (!NT_SUCCESS(Status))
@@ -194,31 +196,40 @@ Done:
 
 PLOGHANDLE ElfGetLogHandleEntryByHandle(IELF_HANDLE EventLogHandle)
 {
+    PLIST_ENTRY CurrentEntry;
     PLOGHANDLE lpLogHandle;
 
-    if (IsListEmpty(&LogHandleListHead))
+    CurrentEntry = LogHandleListHead.Flink;
+    while (CurrentEntry != &LogHandleListHead)
     {
-        return NULL;
-    }
+        lpLogHandle = CONTAINING_RECORD(CurrentEntry,
+                                        LOGHANDLE,
+                                        LogHandleListEntry);
+        CurrentEntry = CurrentEntry->Flink;
 
-    lpLogHandle = CONTAINING_RECORD((PLOGHANDLE)EventLogHandle, LOGHANDLE, LogHandleListEntry);
+        if (lpLogHandle == EventLogHandle)
+            return lpLogHandle;
+    }
 
-    return lpLogHandle;
+    return NULL;
 }
 
 
 static NTSTATUS
-ElfDeleteEventLogHandle(IELF_HANDLE EventLogHandle)
+ElfDeleteEventLogHandle(IELF_HANDLE LogHandle)
 {
-    PLOGHANDLE lpLogHandle = (PLOGHANDLE)EventLogHandle;
+    PLOGHANDLE lpLogHandle;
 
-    if (!ElfGetLogHandleEntryByHandle(lpLogHandle))
+    lpLogHandle = ElfGetLogHandleEntryByHandle(LogHandle);
+    if (!lpLogHandle)
+    {
         return STATUS_INVALID_HANDLE;
+    }
 
+    RemoveEntryList(&lpLogHandle->LogHandleListEntry);
     LogfClose(lpLogHandle->LogFile, FALSE);
 
-    RemoveEntryList(&lpLogHandle->LogHandleListEntry);
-    HeapFree(GetProcessHeap(),0,lpLogHandle);
+    HeapFree(GetProcessHeap(), 0, lpLogHandle);
 
     return STATUS_SUCCESS;
 }
@@ -291,7 +302,7 @@ NTSTATUS ElfrNumberOfRecords(
     PLOGHANDLE lpLogHandle;
     PLOGFILE lpLogFile;
 
-    DPRINT("ElfrNumberOfRecords()");
+    DPRINT("ElfrNumberOfRecords()\n");
 
     lpLogHandle = ElfGetLogHandleEntryByHandle(LogHandle);
     if (!lpLogHandle)
@@ -921,20 +932,22 @@ NTSTATUS ElfrReportEventA(
     }
 
 Done:
-    for (i = 0; i < NumStrings; i++)
+    if (StringsArrayW != NULL)
     {
-        if (StringsArrayW[i] != NULL)
+        for (i = 0; i < NumStrings; i++)
         {
-            if (StringsArrayW[i]->Buffer)
+            if (StringsArrayW[i] != NULL)
             {
-                RtlFreeUnicodeString(StringsArrayW[i]);
-                HeapFree(MyHeap, 0, StringsArrayW[i]);
+                if (StringsArrayW[i]->Buffer)
+                {
+                    RtlFreeUnicodeString(StringsArrayW[i]);
+                    HeapFree(MyHeap, 0, StringsArrayW[i]);
+                }
             }
         }
-    }
 
-    if (StringsArrayW != NULL)
         HeapFree(MyHeap, 0, StringsArrayW);
+    }
 
     RtlFreeUnicodeString(&ComputerNameW);