/* -- see zlib.h -- */
int ZEXPORT PREFIX(gzputs)(gzFile file, const char *s) {
- int ret;
- size_t len;
+ size_t len, put;
gz_state *state;
/* get internal structure */
/* write string */
len = strlen(s);
- ret = (int)gz_write(state, s, len);
- return ret == 0 && len != 0 ? -1 : ret;
+ if ((int)len < 0 || (unsigned)len != len) {
+ gz_error(state, Z_STREAM_ERROR, "string length does not fit in int");
+ return -1;
+ }
+ put = gz_write(state, s, len);
+ return put < len ? -1 : (int)len;
}
/* -- see zlib.h -- */