[BACK]Return to tran.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / awk

Diff for /src/usr.bin/awk/tran.c between version 1.12 and 1.13

version 1.12, 2004/12/30 02:06:00 version 1.13, 2005/04/15 15:54:26
Line 362 
Line 362 
   
 static char *get_str_val(Cell *vp, char **fmt)        /* get string val of a Cell */  static char *get_str_val(Cell *vp, char **fmt)        /* get string val of a Cell */
 {  {
         char s[100];    /* BUG: unchecked */          int n;
         double dtemp;          double dtemp;
   
         if ((vp->tval & (NUM | STR)) == 0)          if ((vp->tval & (NUM | STR)) == 0)
Line 375 
Line 375 
                 if (freeable(vp))                  if (freeable(vp))
                         xfree(vp->sval);                          xfree(vp->sval);
                 if (modf(vp->fval, &dtemp) == 0)        /* it's integral */                  if (modf(vp->fval, &dtemp) == 0)        /* it's integral */
                         snprintf(s, sizeof(s), "%.30g", vp->fval);                          n = asprintf(&vp->sval, "%.30g", vp->fval);
                 else                  else
                         snprintf(s, sizeof(s), *fmt, vp->fval);                          n = asprintf(&vp->sval, *fmt, vp->fval);
                 vp->sval = tostring(s);                  if (n == -1)
                           FATAL("out of space in get_str_val");
                 vp->tval &= ~DONTFREE;                  vp->tval &= ~DONTFREE;
                 vp->tval |= STR;                  vp->tval |= STR;
         }          }

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13