Files
libpst/libpst-0dfabdc07bf3.patch
Dominique Leuenberger 8ae420e948 - Backported upstream patch libpst-0dfabdc07bf3.patch to fix passing
an incompatible pointer type to function uncompress on 32bit targets
  such as i586 and allow build of the package on the architecture with
  GCC 14.

If the fix is OK, please forward it to Factory too soon so that we can
switch the default compiler. Thanks!

OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/libpst?expand=0&rev=77
2024-07-30 12:22:36 +00:00

39 lines
2.0 KiB
Diff

From 0dfabdc07bf31da628aa3d67138ad44d98583d1f Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Mon, 22 Jan 2024 18:43:05 +0100
Subject: [PATCH] build: Fix 'incompatible pointer types' warning on i686
This fixes a recent Fedora build, which failed on i686 architecture
with "incompatible pointer types" error:
libpst.c: In function 'pst_read_block_size':
libpst.c:3832:36: error: passing argument 2 of 'uncompress' from incompatible pointer type [-Wincompatible-pointer-types]
3832 | if (uncompress((Bytef *) *buf, &result_size, (Bytef *) zbuf, size) != Z_OK || result_size != inflated_size) {
| ^~~~~~~~~~~~
| |
| size_t * {aka unsigned int *}
In file included from libpst.c:9:
/usr/include/zlib.h:1251:70: note: expected 'long unsigned int *' but argument is of type 'size_t *' {aka 'unsigned int *'}
1251 | Z_EXTERN int Z_EXPORT uncompress(unsigned char *dest, unsigned long *destLen, const unsigned char *source, unsigned long sourceLen);
| ~~~~~~~~~~~~~~~^~~~~~~
Fixes: commit a9fb0d8c21c781e679e6e93bb24da14b620ce60d
---
src/libpst.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/libpst.c b/src/libpst.c
@@ -3828,9 +3828,9 @@
return -1;
}
*buf = (char *) pst_malloc(inflated_size);
- size_t result_size = inflated_size;
- if (uncompress((Bytef *) *buf, &result_size, (Bytef *) zbuf, size) != Z_OK || result_size != inflated_size) {
- DEBUG_WARN(("Failed to uncompress %i bytes to %i bytes, got %i\n", size, inflated_size, result_size));
+ uLongf result_size = inflated_size;
+ if (uncompress((Bytef *) *buf, &result_size, (Bytef *) zbuf, size) != Z_OK || (size_t) result_size != inflated_size) {
+ DEBUG_WARN(("Failed to uncompress %i bytes to %i bytes, got %i\n", size, inflated_size, (size_t) result_size));
if (zbuf) free(zbuf);
DEBUG_RET();
return -1;