[Bf-blender-cvs] [16c4db122f0] master: Fix error in last commit printing NULL strings

Campbell Barton noreply at git.blender.org
Sun Oct 4 13:25:46 CEST 2020


Commit: 16c4db122f07cdf0e8e96214848e2ddd91c1fdc8
Author: Campbell Barton
Date:   Sun Oct 4 22:23:48 2020 +1100
Branches: master
https://developer.blender.org/rB16c4db122f07cdf0e8e96214848e2ddd91c1fdc8

Fix error in last commit printing NULL strings

While this works with GCC, printing NULL strings is undefined behavior.

===================================================================

M	source/blender/blenkernel/intern/appdir.c

===================================================================

diff --git a/source/blender/blenkernel/intern/appdir.c b/source/blender/blenkernel/intern/appdir.c
index 65c8921666b..667b4d5ef94 100644
--- a/source/blender/blenkernel/intern/appdir.c
+++ b/source/blender/blenkernel/intern/appdir.c
@@ -60,6 +60,9 @@
 #  include <unistd.h>
 #endif /* WIN32 */
 
+static const char _str_null[] = "(null)";
+#define STR_OR_FALLBACK(a) ((a) ? (a) : _str_null)
+
 /* -------------------------------------------------------------------- */
 /** \name Local Variables
  * \{ */
@@ -297,7 +300,11 @@ static bool get_path_local_ex(char *targetpath,
 {
   char relfolder[FILE_MAX];
 
-  CLOG_INFO(&LOG, 3, "folder='%s', subfolder='%s'", folder_name, subfolder_name);
+  CLOG_INFO(&LOG,
+            3,
+            "folder='%s', subfolder='%s'",
+            STR_OR_FALLBACK(folder_name),
+            STR_OR_FALLBACK(subfolder_name));
 
   if (folder_name) { /* `subfolder_name` may be NULL. */
     BLI_path_join(relfolder, sizeof(relfolder), folder_name, subfolder_name, NULL);
@@ -415,7 +422,12 @@ static bool get_path_user_ex(char *targetpath,
     return false;
   }
 
-  CLOG_INFO(&LOG, 3, "'%s', folder='%s', subfolder='%s'", user_path, folder_name, subfolder_name);
+  CLOG_INFO(&LOG,
+            3,
+            "'%s', folder='%s', subfolder='%s'",
+            user_path,
+            STR_OR_FALLBACK(folder_name),
+            STR_OR_FALLBACK(subfolder_name));
 
   /* `subfolder_name` may be NULL. */
   return test_path(
@@ -470,8 +482,12 @@ static bool get_path_system_ex(char *targetpath,
     return false;
   }
 
-  CLOG_INFO(
-      &LOG, 3, "'%s', folder='%s', subfolder='%s'", system_path, folder_name, subfolder_name);
+  CLOG_INFO(&LOG,
+            3,
+            "'%s', folder='%s', subfolder='%s'",
+            system_path,
+            STR_OR_FALLBACK(folder_name),
+            STR_OR_FALLBACK(subfolder_name));
 
   /* Try `$BLENDERPATH/folder_name/subfolder_name`, `subfolder_name` may be NULL. */
   return test_path(



More information about the Bf-blender-cvs mailing list