projects
/
gnulib.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8cacee9
)
(getndelim2): Upon realloc failure, don't leak memory.
author
Jim Meyering
<jim@meyering.net>
Sun, 25 Apr 2004 14:12:22 +0000
(14:12 +0000)
committer
Jim Meyering
<jim@meyering.net>
Sun, 25 Apr 2004 14:12:22 +0000
(14:12 +0000)
lib/getndelim2.c
patch
|
blob
|
history
diff --git
a/lib/getndelim2.c
b/lib/getndelim2.c
index
3959462
..
2b6dc11
100644
(file)
--- a/
lib/getndelim2.c
+++ b/
lib/getndelim2.c
@@
-1,7
+1,7
@@
/* getndelim2 - Read a line from a stream, stopping at one of 2 delimiters,
with bounded memory allocation.
/* getndelim2 - Read a line from a stream, stopping at one of 2 delimiters,
with bounded memory allocation.
- Copyright (C) 1993, 1996, 1997, 1998, 2000, 2003 Free Software
+ Copyright (C) 1993, 1996, 1997, 1998, 2000, 2003
, 2004
Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@
-80,15
+80,17
@@
getndelim2 (char **lineptr, size_t *linesize, size_t nmax,
{
size_t newlinesize =
(*linesize > MIN_CHUNK ? 2 * *linesize : *linesize + MIN_CHUNK);
{
size_t newlinesize =
(*linesize > MIN_CHUNK ? 2 * *linesize : *linesize + MIN_CHUNK);
+ char *p;
if (! (*linesize < newlinesize && newlinesize <= nmax))
newlinesize = nmax;
*linesize = newlinesize;
nbytes_avail = *linesize + *lineptr - read_pos;
if (! (*linesize < newlinesize && newlinesize <= nmax))
newlinesize = nmax;
*linesize = newlinesize;
nbytes_avail = *linesize + *lineptr - read_pos;
-
*lineptr
= realloc (*lineptr, *linesize);
- if (!
*lineptr
)
+
p
= realloc (*lineptr, *linesize);
+ if (!
p
)
return -1;
return -1;
+ *lineptr = p;
read_pos = *linesize - nbytes_avail + *lineptr;
}
read_pos = *linesize - nbytes_avail + *lineptr;
}