lib/portableproplib/prop_zlib.c: use a stack buffer to process compressed chunks.
This commit is contained in:
parent
83f5e35ec7
commit
fc368e159d
@ -1,5 +1,5 @@
|
|||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2010-2012 Juan Romero Pardines.
|
* Copyright (c) 2010-2014 Juan Romero Pardines.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -58,7 +58,7 @@ prop ## type ## _internalize_from_zfile(const char *fname) \
|
|||||||
struct _prop_object_internalize_mapped_file *mf; \
|
struct _prop_object_internalize_mapped_file *mf; \
|
||||||
prop ## type ## _t obj = NULL; \
|
prop ## type ## _t obj = NULL; \
|
||||||
z_stream strm; \
|
z_stream strm; \
|
||||||
unsigned char *out; \
|
unsigned char out[_READ_CHUNK+1]; \
|
||||||
char *uncomp_xml = NULL; \
|
char *uncomp_xml = NULL; \
|
||||||
size_t have; \
|
size_t have; \
|
||||||
ssize_t totalsize = 0; \
|
ssize_t totalsize = 0; \
|
||||||
@ -78,13 +78,6 @@ prop ## type ## _internalize_from_zfile(const char *fname) \
|
|||||||
if (uncomp_xml == NULL) \
|
if (uncomp_xml == NULL) \
|
||||||
goto out; \
|
goto out; \
|
||||||
\
|
\
|
||||||
/* temporary output buffer for inflate */ \
|
|
||||||
out = _PROP_MALLOC(_READ_CHUNK, M_TEMP); \
|
|
||||||
if (out == NULL) { \
|
|
||||||
_PROP_FREE(uncomp_xml, M_TEMP); \
|
|
||||||
goto out; \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
/* Decompress the mmap'ed buffer with zlib */ \
|
/* Decompress the mmap'ed buffer with zlib */ \
|
||||||
strm.zalloc = Z_NULL; \
|
strm.zalloc = Z_NULL; \
|
||||||
strm.zfree = Z_NULL; \
|
strm.zfree = Z_NULL; \
|
||||||
@ -123,7 +116,6 @@ out2: \
|
|||||||
(void)inflateEnd(&strm); \
|
(void)inflateEnd(&strm); \
|
||||||
out1: \
|
out1: \
|
||||||
obj = prop ## type ## _internalize(uncomp_xml); \
|
obj = prop ## type ## _internalize(uncomp_xml); \
|
||||||
_PROP_FREE(out, M_TEMP); \
|
|
||||||
_PROP_FREE(uncomp_xml, M_TEMP); \
|
_PROP_FREE(uncomp_xml, M_TEMP); \
|
||||||
out: \
|
out: \
|
||||||
_prop_object_internalize_unmap_file(mf); \
|
_prop_object_internalize_unmap_file(mf); \
|
||||||
|
Loading…
Reference in New Issue
Block a user