aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2011-10-18 23:05:37 -0700
committerMark Adler <madler@alumni.caltech.edu>2011-10-18 23:05:37 -0700
commit5ab9f47745fe9353291b217f705086b6070575d5 (patch)
tree0a6c69f912f56cdbd36328cc67e4637bde6208b9
parent5b48d061c8c46bc19e6ad965157440880e5708b9 (diff)
downloadzlib-5ab9f47745fe9353291b217f705086b6070575d5.tar.gz
zlib-5ab9f47745fe9353291b217f705086b6070575d5.tar.bz2
zlib-5ab9f47745fe9353291b217f705086b6070575d5.zip
Add #define ZLIB_CONST option to use const in the z_stream interface.
This permits compilers to check for the proper treatment of next_in and msg in the z_stream structure. This is an option instead of the default in order to preserve backward compatibility. Some applications make use of the z_stream structure outside of zlib, and perform operations such as free(strm->next_in), which would not be permitted when next_in is const. The #define ZLIB_CONST needs to precede the #include "zlib.h">, in order to make next_in and msg const pointers in the z_stream type.
-rw-r--r--zconf.h6
-rw-r--r--zconf.h.cmakein6
-rw-r--r--zconf.h.in6
-rw-r--r--zlib.h4
4 files changed, 20 insertions, 2 deletions
diff --git a/zconf.h b/zconf.h
index df7ff61..fd10c6a 100644
--- a/zconf.h
+++ b/zconf.h
@@ -214,6 +214,12 @@
214# endif 214# endif
215#endif 215#endif
216 216
217#if defined(ZLIB_CONST) && !defined(z_const)
218# define z_const const
219#else
220# define z_const
221#endif
222
217/* Some Mac compilers merge all .h files incorrectly: */ 223/* Some Mac compilers merge all .h files incorrectly: */
218#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) 224#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
219# define NO_DUMMY_DECL 225# define NO_DUMMY_DECL
diff --git a/zconf.h.cmakein b/zconf.h.cmakein
index 8450547..0b880ad 100644
--- a/zconf.h.cmakein
+++ b/zconf.h.cmakein
@@ -216,6 +216,12 @@
216# endif 216# endif
217#endif 217#endif
218 218
219#if defined(ZLIB_CONST) && !defined(z_const)
220# define z_const const
221#else
222# define z_const
223#endif
224
219/* Some Mac compilers merge all .h files incorrectly: */ 225/* Some Mac compilers merge all .h files incorrectly: */
220#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) 226#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
221# define NO_DUMMY_DECL 227# define NO_DUMMY_DECL
diff --git a/zconf.h.in b/zconf.h.in
index df7ff61..fd10c6a 100644
--- a/zconf.h.in
+++ b/zconf.h.in
@@ -214,6 +214,12 @@
214# endif 214# endif
215#endif 215#endif
216 216
217#if defined(ZLIB_CONST) && !defined(z_const)
218# define z_const const
219#else
220# define z_const
221#endif
222
217/* Some Mac compilers merge all .h files incorrectly: */ 223/* Some Mac compilers merge all .h files incorrectly: */
218#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) 224#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
219# define NO_DUMMY_DECL 225# define NO_DUMMY_DECL
diff --git a/zlib.h b/zlib.h
index 99cd058..14a925b 100644
--- a/zlib.h
+++ b/zlib.h
@@ -83,7 +83,7 @@ typedef void (*free_func) OF((voidpf opaque, voidpf address));
83struct internal_state; 83struct internal_state;
84 84
85typedef struct z_stream_s { 85typedef struct z_stream_s {
86 Bytef *next_in; /* next input byte */ 86 z_const Bytef *next_in; /* next input byte */
87 uInt avail_in; /* number of bytes available at next_in */ 87 uInt avail_in; /* number of bytes available at next_in */
88 uLong total_in; /* total number of input bytes read so far */ 88 uLong total_in; /* total number of input bytes read so far */
89 89
@@ -91,7 +91,7 @@ typedef struct z_stream_s {
91 uInt avail_out; /* remaining free space at next_out */ 91 uInt avail_out; /* remaining free space at next_out */
92 uLong total_out; /* total number of bytes output so far */ 92 uLong total_out; /* total number of bytes output so far */
93 93
94 char *msg; /* last error message, NULL if no error */ 94 z_const char *msg; /* last error message, NULL if no error */
95 struct internal_state FAR *state; /* not visible by applications */ 95 struct internal_state FAR *state; /* not visible by applications */
96 96
97 alloc_func zalloc; /* used to allocate the internal state */ 97 alloc_func zalloc; /* used to allocate the internal state */