Make sure that the args array is initialized
authorNelson Ferreira <nelson.ferreira@ieee.org>
Fri, 16 Sep 2011 07:32:15 +0000 (03:32 -0400)
committerNelson Ferreira <nelson.ferreira@ieee.org>
Fri, 16 Sep 2011 07:32:15 +0000 (03:32 -0400)
CID:394
Signed-off-by: Nelson Ferreira <nelson.ferreira@ieee.org>
modules/ase/ase-interval.c

index 777fdff..6c3c850 100644 (file)
@@ -3042,23 +3042,26 @@ static Lisp_Object
 __ase_interval_union_rational(ase_interval_union_item_t u)
 {
        int i = 0, nargs = __ase_interval_union_update_rational(u);
-       Lisp_Object args[nargs];
-
        if (nargs == 0)
                return Qzero;
-
-       while (u) {
-               if (ASE_INTERVALP(u->current)) {
-                       args[i] = _ase_interval_rational(
-                               XASE_INTERVAL(u->current));
-               } else if (ASE_INTERVAL_INTERIOR_P(u->current)) {
-                       args[i] = _ase_interval_interior_rational(
-                               XASE_CARTESIAN(u->current));
+       {
+               Lisp_Object args[nargs];
+               for ( i = nargs; i > 0; )
+                       args[--i] = Qnil;
+
+               while (u) {
+                       if (ASE_INTERVALP(u->current)) {
+                               args[i] = _ase_interval_rational(
+                                       XASE_INTERVAL(u->current));
+                       } else if (ASE_INTERVAL_INTERIOR_P(u->current)) {
+                               args[i] = _ase_interval_interior_rational(
+                                       XASE_CARTESIAN(u->current));
+                       }
+                       i++;
+                       u = u->next;
                }
-               i++;
-               u = u->next;
+               return ent_binop_many(ASE_BINARY_OP_SUM, nargs, args);
        }
-       return ent_binop_many(ASE_BINARY_OP_SUM, nargs, args);
 }
 
 static inline void