embryo_cc - be sensible about realloc returns so analysers are happy
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Mon, 24 Jul 2017 04:46:30 +0000 (13:46 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Mon, 24 Jul 2017 04:46:30 +0000 (13:46 +0900)
assingto tmp var then assign to real one after a check to analysers
dont complain.

src/bin/embryo/embryo_cc_sc1.c

index 2cacbe5..41ccacd 100644 (file)
@@ -2511,12 +2511,13 @@ declargs(symbol * sym)
                                         * have a default value */
                  if ((sym->usage & uPROTOTYPED) == 0)
                    {
+                      arginfo *tmp;
                       /* redimension the argument list, add the entry */
-                      sym->dim.arglist =
-                         (arginfo *) realloc(sym->dim.arglist,
-                                             (argcnt + 2) * sizeof(arginfo));
-                      if (!sym->dim.arglist)
+                      tmp = realloc(sym->dim.arglist,
+                                    (argcnt + 2) * sizeof(arginfo));
+                      if (!tmp)
                          error(103);   /* insufficient memory */
+                      sym->dim.arglist = tmp;
                       sym->dim.arglist[argcnt] = arg;
                       sym->dim.arglist[argcnt + 1].ident = 0;  /* keep the list
                                                                 * terminated */
@@ -2548,12 +2549,13 @@ declargs(symbol * sym)
                     tags[numtags++] = 0;       /* default tag */
                  if ((sym->usage & uPROTOTYPED) == 0)
                    {
+                      arginfo *tmp;
                       /* redimension the argument list, add the entry iVARARGS */
-                      sym->dim.arglist =
-                         (arginfo *) realloc(sym->dim.arglist,
-                                             (argcnt + 2) * sizeof(arginfo));
-                      if (!sym->dim.arglist)
+                      tmp = realloc(sym->dim.arglist,
+                                    (argcnt + 2) * sizeof(arginfo));
+                      if (!tmp)
                          error(103);   /* insufficient memory */
+                      sym->dim.arglist = tmp;
                       sym->dim.arglist[argcnt + 1].ident = 0;  /* keep the list
                                                                 * terminated */
                       sym->dim.arglist[argcnt].ident = iVARARGS;