From 01c6257c5c8d6d0473271c006392b5d43f1214e9 Mon Sep 17 00:00:00 2001 From: Martin Kraemer Date: Wed, 28 Jan 2004 16:25:12 +0000 Subject: [PATCH] Bug fix: Images would be broken on big-endian machines because the putc function wrote the first (instead of "the low order") byte. That resulted in unexpected zero bytes. --- ext/gd/gd_ctx.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ext/gd/gd_ctx.c b/ext/gd/gd_ctx.c index d1ec8e0c25..6fb7b84ce4 100644 --- a/ext/gd/gd_ctx.c +++ b/ext/gd/gd_ctx.c @@ -24,8 +24,13 @@ static void _php_image_output_putc(struct gdIOCtx *ctx, int c) { + /* without the following downcast, the write will fail + * (i.e., will write a zero byte) for all + * big endian architectures: + */ + unsigned char ch = (unsigned char) c; TSRMLS_FETCH(); - php_write(&c, 1 TSRMLS_CC); + php_write(&ch, 1 TSRMLS_CC); } static int _php_image_output_putbuf(struct gdIOCtx *ctx, const void* buf, int l) -- 2.50.1