Add caller debugging for wchar / utf8 convs
authorAndre Heinecke <aheinecke@intevation.de>
Mon, 23 Jul 2018 13:24:22 +0000 (15:24 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Mon, 23 Jul 2018 13:24:22 +0000 (15:24 +0200)
* src/w32-gettext.cpp, src/w32-gettext.h (utf8_to_wchar),
(wchar_to_utf8): Improve tracing for memory debug.

--
We have some leaks here.

src/w32-gettext.cpp
src/w32-gettext.h

index 9d9a515..edad1fd 100644 (file)
@@ -1466,7 +1466,7 @@ native_to_wchar (const char *string)
    The result of calling this function with STRING set to NULL is not
    defined. */
 wchar_t *
-utf8_to_wchar (const char *string)
+_utf8_to_wchar (const char *string)
 {
   int n;
   wchar_t *result;
@@ -1495,7 +1495,7 @@ utf8_to_wchar (const char *string)
    The result of calling this function with STRING set to NULL is not
    defined. */
 char *
-wchar_to_utf8 (const wchar_t *string)
+_wchar_to_utf8 (const wchar_t *string)
 {
   int n;
   char *result;
index 7010586..7374ae9 100644 (file)
@@ -64,10 +64,28 @@ static inline const char *gettext_localename (void) { return ""; }
 
 #endif /* !ENABLE_NLS */
 
-/* Conversion function. */
-char *wchar_to_utf8 (const wchar_t *string);
-wchar_t *utf8_to_wchar (const char *string);
+#define utf8_to_wchar(VAR1) ({wchar_t *retval; \
+  retval = _utf8_to_wchar (VAR1); \
+  if ((opt.enable_debug & DBG_OOM_EXTRA)) \
+  { \
+    log_debug ("%s:%s:%i wchar_t alloc %p", \
+               SRCNAME, __func__, __LINE__, retval); \
+  } \
+retval;})
+
+#define wchar_to_utf8(VAR1) ({char *retval; \
+  retval = _wchar_to_utf8 (VAR1); \
+  if ((opt.enable_debug & DBG_OOM_EXTRA)) \
+  { \
+    log_debug ("%s:%s:%i char utf8 alloc %p", \
+               SRCNAME, __func__, __LINE__, retval); \
+  } \
+retval;})
+
 
+/* Conversion function. */
+char *_wchar_to_utf8 (const wchar_t *string);
+wchar_t *_utf8_to_wchar (const char *string);
 char *utf8_to_native (const char *string);
 char *native_to_utf8 (const char *string);