diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/decompress.c | 13 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 88e1fdc4e66..04c89b63fa4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2013-08-12 Eli Zaretskii <eliz@gnu.org> + + * decompress.c <zlib_initialized> [WINDOWSNT]: New static variable. + (Fzlib_decompress_region) [WINDOWSNT]: Call init_zlib_functions if + not yet initialized. + 2013-08-12 Lars Magne Ingebrigtsen <larsi@gnus.org> * decompress.c (Fzlib_decompress_region): Support zlib diff --git a/src/decompress.c b/src/decompress.c index b3ad4f7676a..a09033ab8c3 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -38,7 +38,7 @@ static Lisp_Object Qzlib_dll; /* Macro for loading zlib functions from the library. */ #define LOAD_ZLIB_FN(lib,func) { \ fn_##func = (void *) GetProcAddress (lib, #func); \ - if (!fn_##func) return 0; \ + if (!fn_##func) return false; \ } DEF_ZLIB_FN (int, inflateInit2_, @@ -50,6 +50,8 @@ DEF_ZLIB_FN (int, inflate, DEF_ZLIB_FN (int, inflateEnd, (z_streamp strm)); +static bool zlib_initialized; + static bool init_zlib_functions (void) { @@ -58,13 +60,13 @@ init_zlib_functions (void) if (!library) { message1 ("zlib library not found"); - return 0; + return false; } LOAD_ZLIB_FN (library, inflateInit2_); LOAD_ZLIB_FN (library, inflate); LOAD_ZLIB_FN (library, inflateEnd); - return 1; + return true; } #define fn_inflateInit2(strm, windowBits) \ @@ -139,6 +141,11 @@ This function can be called only in unibyte buffers. */) if (! NILP (BVAR (current_buffer, enable_multibyte_characters))) error ("This function can be called only in unibyte buffers"); +#ifdef WINDOWSNT + if (!zlib_initialized) + zlib_initialized = init_zlib_functions (); +#endif + /* This is a unibyte buffer, so character positions and bytes are the same. */ istart = XINT (start); |
