Files
findutils/lib/extendbuf.h
James Youngman 5b9e20405d Support extendbuf buffers larger than SIZE_MAX/2.
* lib/extendbuf.c (xextendbuf): New function; extends the buffer,
but calls xalloc_die on failure.  On the the other hand, extendbuf
returns NULL on failure.
(decide_size): If wanted>SIZE_MAX/2, return wanted.  This means
that for very large buffers, performance on repeated extension
degrades from linear to quadratic (instead of just failing at that
point, as before).
* lib/savedirinfo.c (xsavedir): Use xextendbuf rather than
extendbuf, now that there is a difference in semantics.
* find/fstype.c (get_mounted_filesystems): If extendbuf returns
NULL, fail (by returning NULL ourselves).
(get_mounted_devices): 	Likewise.

Signed-off-by: James Youngman <jay@gnu.org>
2010-04-07 21:35:02 +01:00

27 lines
959 B
C

/* extendbuf.h -- Manage a dynamically-alloicated buffer
Copyright (C) 2004, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INC_EXTENDBUF_H
#define INC_EXTENDBUF_H 1
void *extendbuf(void* existing, size_t wanted, size_t *allocated);
void *xextendbuf(void* existing, size_t wanted, size_t *allocated);
#endif