]> git.xolatile.top Git - emil-bake.git/commitdiff
Memory edgecase fixed
authorEmil <emilwilliams@tuta.io>
Mon, 16 Oct 2023 19:16:46 +0000 (19:16 +0000)
committerEmil <emilwilliams@tuta.io>
Mon, 16 Oct 2023 19:16:46 +0000 (19:16 +0000)
bake.c

diff --git a/bake.c b/bake.c
index f089600489c32adde46d57ffd3572b0597a5d7e2..ec03ebecefa15139a12096d3920db853b309b198 100644 (file)
--- a/bake.c
+++ b/bake.c
@@ -162,7 +162,7 @@ find_region(map_t m) {
       fprintf(stderr, "ERROR: Found start without suffix spacing.\n");
       return buf;
     }
-#endif
+#endif /* REQUIRE_SPACE */
     stop = find(STOP, start, start + m.len - (start - m.str));
     if (!stop) {
       stop = start;
@@ -174,14 +174,13 @@ find_region(map_t m) {
       }
     }
 #ifdef REQUIRE_SPACE
-    else {
-      if (!isspace(*(stop - 1))) {
-        fprintf(stderr, "ERROR: Found stop without prefixing spacing.\n");
-        return buf;
-      }
+    else if (!isspace(*(stop - 1))) {
+      fprintf(stderr, "ERROR: Found stop without prefixing spacing.\n");
+      return buf;
     }
-#endif
-    if (stop) { buf = strndup(start, (stop - m.str) - (start - m.str)); }
+#endif /* REQUIRE_SPACE */
+    if (stop)
+    { buf = strndup(start, (stop - m.str) - (start - m.str)); }
   }
   return buf;
 }
@@ -208,7 +207,8 @@ expand_size(char * buf, int argc, char ** argv) {
   size_t i, len, max;
   len = max = strlen(buf) + 1;
   for (i = 0; i < len; ++i) {
-    if (buf[i] == '\\') { i += 2; continue; }
+    if (buf[i] == '\\')
+    { i += 2; continue; }
     else if (buf[i] == '$') {
       switch (buf[++i]) {
       case '@':
@@ -233,7 +233,8 @@ expand(char * buf) {
   size_t i;
   char * ptr = NULL;
   for (i = 0; buf[i]; ++i) {
-    if (buf[i] == '\\') { i += 2; continue; }
+    if (buf[i] == '\\')
+    { i += 2; continue; }
     else if (buf[i] == '$') {
       switch (buf[++i]) {
       case '@':
@@ -306,8 +307,11 @@ main(int argc, char ** argv) {
   }
 
   root(&g_filename);
-  buf = realloc(buf, expand_size(buf, argc, argv));
-  if (!buf) { free(g_short); free(g_all); return 1; }
+  { char * buf2 = buf;
+    buf = realloc(buf, expand_size(buf, argc, argv));
+    if (!buf)
+    { free(buf2); free(g_short); free(g_all); return 1; }
+  }
   buf = expand(buf);
   fprintf(stderr, "Exec: %s\n", buf + strip(buf));
   if ((ret = ret ? 0 : run(buf)))