]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
Common source file changes not applicable to open-vm-tools.
authorOliver Kurth <okurth@vmware.com>
Tue, 21 Apr 2020 21:43:45 +0000 (14:43 -0700)
committerOliver Kurth <okurth@vmware.com>
Tue, 21 Apr 2020 21:43:45 +0000 (14:43 -0700)
open-vm-tools/lib/err/err.c
open-vm-tools/lib/include/err.h

index 2523f230b5e4d76ab170a225157a00c2b62f611b..d6180df6f52bd2db63914d8026ee4003c122c31d 100644 (file)
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 1998-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 1998-2016,2020 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -65,7 +65,8 @@ Atomic_Ptr errStrTable;
 #endif
 
 #define NUMTABLE() HashTable_AllocOnce(&errNumTable, HASHTABLE_SIZE, \
-                                       HASH_INT_KEY | HASH_FLAG_ATOMIC, NULL)
+                                       HASH_INT_KEY | HASH_FLAG_ATOMIC, \
+                                       ErrFreeErrInfo)
 #define PTRTABLE() HashTable_AllocOnce(&errPtrTable, HASHTABLE_SIZE, \
                                        HASH_INT_KEY | HASH_FLAG_ATOMIC, NULL)
 #if defined VMX86_DEBUG && defined __linux__
@@ -75,6 +76,33 @@ Atomic_Ptr errStrTable;
 #endif
 
 
+/*
+ *----------------------------------------------------------------------
+ *
+ * ErrFreeErrInfo --
+ *
+ *      HashTableFreeEntryFn helper function to free ErrInfo struct.
+ *
+ * Results:
+ *      None.
+ *
+ * Side effects:
+ *      None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+ErrFreeErrInfo(void *pErrInfo) // IN
+{
+   ErrInfo *errInfo = pErrInfo;
+   if (errInfo) {
+      free(errInfo->string);
+      free(errInfo);
+   }
+}
+
+
 /*
  *----------------------------------------------------------------------
  *
@@ -115,7 +143,7 @@ Err_ErrString(void)
  *
  * Results:
  *      Error message string in UTF-8.
- *      
+ *
  * Side effects:
  *      None.
  *     Current error number is preserved.
@@ -223,7 +251,7 @@ Err_Errno2String(Err_Number errorNumber) // IN
  *
  * Results:
  *      Error number or ERR_INVALID.
- *      
+ *
  * Side effects:
  *      None.
  *
@@ -246,6 +274,40 @@ Err_String2Errno(const char *string) // IN
 }
 
 
+/*
+ *----------------------------------------------------------------------
+ *
+ * Err_Exit --
+ *
+ *      Reclaim memory.  Useful for avoiding leaks at exit being
+ *      reported by valgrind / Memory Validator.
+ *
+ *      Assumes that no other threads are calling into bora/lib/err.
+ *
+ * Results:
+ *      None.
+ *
+ * Side effects:
+ *      None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+Err_Exit(void) // IN
+{
+   HashTable *numTable = NUMTABLE();
+   HashTable *ptrTable = PTRTABLE();
+#if defined VMX86_DEBUG && defined __linux__
+   HashTable *strTable = STRTABLE();
+
+   HashTable_FreeUnsafe(strTable);
+#endif
+   HashTable_FreeUnsafe(ptrTable);
+   HashTable_FreeUnsafe(numTable);
+}
+
+
 #ifdef VMX86_DEBUG
 /*
  *----------------------------------------------------------------------
@@ -259,7 +321,7 @@ Err_String2Errno(const char *string) // IN
  *
  * Results:
  *      Error number or ERR_INVALID.
- *      
+ *
  * Side effects:
  *      None.
  *
index fab9d2f6c5e5817072f8b47a0b5829821246056e..9cc415530a65427a65a92e963af21cd79f37b83e 100644 (file)
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2004-2019 VMware, Inc. All rights reserved.
+ * Copyright (C) 2004-2020 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -58,6 +58,8 @@ Err_Number Err_String2ErrnoDebug(const char *string);
 char *Err_SanitizeMessage(const char *msg);
 #endif
 
+void Err_Exit(void);
+
 /*
  *----------------------------------------------------------------------
  *