elm config save - work around compiler bug that loses local var value
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Fri, 24 Jul 2015 14:57:29 +0000 (23:57 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Mon, 27 Jul 2015 05:03:33 +0000 (14:03 +0900)
yes. compiler bug. believe it or not.

src/lib/elm_config.c

index 2e5b086ade250c688b59139936211175ca466d61..90fe31a376680c244ed51b41d6d542ba060311d0 100644 (file)
@@ -570,6 +570,13 @@ _elm_config_user_dir_snprintf(char       *dst,
                  ELEMENTARY_BASE_DIR, sizeof(ELEMENTARY_BASE_DIR) - 1);
 #endif
           }
+        off = user_dir_len + 1;
+        if (off >= size) return off;
+        dst[user_dir_len] = '/';
+        va_start(ap, fmt);
+        off = off + vsnprintf(dst + off, size - off, fmt, ap);
+        va_end(ap);
+        return off;
      }
 #if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
    else
@@ -590,20 +597,16 @@ _elm_config_user_dir_snprintf(char       *dst,
            ELEMENTARY_BASE_DIR, sizeof(ELEMENTARY_BASE_DIR) - 1);
 #  endif
 # endif /* HAVE_GETPWENT */
+        off = user_dir_len + 1;
+        if (off >= size) return off;
+        dst[user_dir_len] = '/';
+        va_start(ap, fmt);
+        off = off + vsnprintf(dst + off, size - off, fmt, ap);
+        va_end(ap);
+        return off;
      }
 #endif
-
-   off = user_dir_len + 1;
-   if (off >= size) goto end;
-
-   va_start(ap, fmt);
-   dst[user_dir_len] = '/';
-
-   off = off + vsnprintf(dst + off, size - off, fmt, ap);
-   va_end(ap);
-
-end:
-   return off;
+   return 0;
 }
 
 const char *