diff options
Diffstat (limited to '')
| -rw-r--r-- | gzlib.c | 10 |
1 files changed, 4 insertions, 6 deletions
| @@ -541,7 +541,8 @@ const char * ZEXPORT gzerror(file, errnum) | |||
| 541 | /* return error information */ | 541 | /* return error information */ |
| 542 | if (errnum != NULL) | 542 | if (errnum != NULL) |
| 543 | *errnum = state->err; | 543 | *errnum = state->err; |
| 544 | return state->msg == NULL ? "" : state->msg; | 544 | return state->err == Z_MEM_ERROR ? "out of memory" : |
| 545 | (state->msg == NULL ? "" : state->msg); | ||
| 545 | } | 546 | } |
| 546 | 547 | ||
| 547 | /* -- see zlib.h -- */ | 548 | /* -- see zlib.h -- */ |
| @@ -592,16 +593,13 @@ void ZLIB_INTERNAL gz_error(state, err, msg) | |||
| 592 | if (msg == NULL) | 593 | if (msg == NULL) |
| 593 | return; | 594 | return; |
| 594 | 595 | ||
| 595 | /* for an out of memory error, save as static string */ | 596 | /* for an out of memory error, return literal string when requested */ |
| 596 | if (err == Z_MEM_ERROR) { | 597 | if (err == Z_MEM_ERROR) |
| 597 | state->msg = (char *)msg; | ||
| 598 | return; | 598 | return; |
| 599 | } | ||
| 600 | 599 | ||
| 601 | /* construct error message with path */ | 600 | /* construct error message with path */ |
| 602 | if ((state->msg = malloc(strlen(state->path) + strlen(msg) + 3)) == NULL) { | 601 | if ((state->msg = malloc(strlen(state->path) + strlen(msg) + 3)) == NULL) { |
| 603 | state->err = Z_MEM_ERROR; | 602 | state->err = Z_MEM_ERROR; |
| 604 | state->msg = (char *)"out of memory"; | ||
| 605 | return; | 603 | return; |
| 606 | } | 604 | } |
| 607 | #if !defined(NO_snprintf) && !defined(NO_vsnprintf) | 605 | #if !defined(NO_snprintf) && !defined(NO_vsnprintf) |
