/[pspp]/pspp/src/str.c
ViewVC logotype

Diff of /pspp/src/str.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.15 by blp, Sun Jun 12 21:58:10 2005 UTC revision 1.16 by jmd, Mon Sep 12 11:33:55 2005 UTC
# Line 453  ds_vprintf (struct string *st, const cha Line 453  ds_vprintf (struct string *st, const cha
453       been written. */       been written. */
454    
455    int avail, needed;    int avail, needed;
456      va_list a1;
457    
458      va_copy(a1, args);
459    avail = st->capacity - st->length + 1;    avail = st->capacity - st->length + 1;
460    needed = vsnprintf (st->string + st->length, avail, format, args);    needed = vsnprintf (st->string + st->length, avail, format, args);
461    
# Line 462  ds_vprintf (struct string *st, const cha Line 464  ds_vprintf (struct string *st, const cha
464      {      {
465        ds_extend (st, st->length + needed);        ds_extend (st, st->length + needed);
466                
467        vsprintf (st->string + st->length, format, args);        vsprintf (st->string + st->length, format, a1);
468      }      }
469    else    else
470      while (needed == -1)      while (needed == -1)
471        {        {
472            va_list a2;
473            va_copy(a2, a1);
474    
475          ds_extend (st, (st->capacity + 1) * 2);          ds_extend (st, (st->capacity + 1) * 2);
476          avail = st->capacity - st->length + 1;          avail = st->capacity - st->length + 1;
477    
478          needed = vsnprintf (st->string + st->length, avail, format, args);          needed = vsnprintf (st->string + st->length, avail, format, a2);
479            va_end(a2);
480    
481        }        }
482      va_end(a1);
483    
484    st->length += needed;    st->length += needed;
485  }  }

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26