From: Oliver Kurth Date: Tue, 21 Apr 2020 21:43:45 +0000 (-0700) Subject: Common source file changes not applicable to open-vm-tools. X-Git-Tag: stable-11.2.0~251 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf687d16a380a2f94952a9d9ad84d492376d2895;p=thirdparty%2Fopen-vm-tools.git Common source file changes not applicable to open-vm-tools. --- diff --git a/open-vm-tools/lib/err/err.c b/open-vm-tools/lib/err/err.c index 2523f230b..d6180df6f 100644 --- a/open-vm-tools/lib/err/err.c +++ b/open-vm-tools/lib/err/err.c @@ -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. * diff --git a/open-vm-tools/lib/include/err.h b/open-vm-tools/lib/include/err.h index fab9d2f6c..9cc415530 100644 --- a/open-vm-tools/lib/include/err.h +++ b/open-vm-tools/lib/include/err.h @@ -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); + /* *---------------------------------------------------------------------- *