This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi! We cannot call obstack_blank, because we call then _IO_str_init_static (&new_f.ofile.file.file, obstack_base (obstack), size, obstack_next_free (obstack)); ^^^^^^^^^^^^^^^^^^^^^^^^^^^ and obstack_next_free points to wrong place in that case (64bytes away from where it should). With this patch, obstack_printf seems to work just fine to me even in the case where it is called with obstack_object_size (obstack) == obstack_room (obstack) == 0. 2000-06-27 Jakub Jelinek <jakub@redhat.com> * libio/obprintf.c (_IO_obstack_vprintf): Call obstack_make_room, not obstack_blank. --- libc/libio/obprintf.c.jj Tue Apr 4 01:32:57 2000 +++ libc/libio/obprintf.c Tue Jun 27 12:12:11 2000 @@ -144,14 +144,13 @@ _IO_obstack_vprintf (struct obstack *obs /* We have to handle the allocation a bit different since the `_IO_str_init_static' function would handle a size of zero different from what we expect. */ - size = 64; /* Get more memory. */ - obstack_blank (obstack, size); + obstack_make_room (obstack, 64); - /* Recompute who much room we have. */ + /* Recompute how much room we have. */ room = obstack_room (obstack); - size += room; + size = room; assert (size != 0); } Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |