summaryrefslogtreecommitdiff
path: root/backport-Fix-bug-when-gzungetc-is-used-immediately-after-gzopen.patch
blob: a6b892ee1572c293eb3a9674fd465ad64346f0fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
From 7dd6aa72455ef1f2aacdc28a00d1eaf632d59593 Mon Sep 17 00:00:00 2001
From: Mark Adler <madler@alumni.caltech.edu>
Date: Fri, 11 Aug 2023 10:59:03 -0700
Subject: [PATCH] Fix bug when gzungetc() is used immediately after gzopen().

Reference:https://github.com/madler/zlib/commit/7dd6aa72455ef1f2aacdc28a00d1eaf632d59593
Conflict:NA
---
 gzread.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/gzread.c b/gzread.c
index 6034a2823..4168cbc88 100644
--- a/gzread.c
+++ b/gzread.c
@@ -443,6 +443,10 @@ int ZEXPORT gzungetc(int c, gzFile file) {
         return -1;
     state = (gz_statep)file;
 
+    /* in case this was just opened, set up the input buffer */
+    if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0)
+        (void)gz_look(state);
+
     /* check that we're reading and that there's no (serious) error */
     if (state->mode != GZ_READ ||
         (state->err != Z_OK && state->err != Z_BUF_ERROR))