From f84c910a305a8dbae3a4d8548764b0603819e05f Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 16 Nov 2016 07:41:19 +0100 Subject: [PATCH 2/2] fix PHP 5/7 compatibility --- php/libpuzzle/libpuzzle.c | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/php/libpuzzle/libpuzzle.c b/php/libpuzzle/libpuzzle.c index 82e84c3..f69ee4a 100644 --- a/php/libpuzzle/libpuzzle.c +++ b/php/libpuzzle/libpuzzle.c @@ -8,6 +8,16 @@ #include #include "php_libpuzzle.h" +/* Compatibility layer */ +#if PHP_MAJOR_VERSION < 7 +#define RV_STRINGL(s,l) RETVAL_STRINGL(s, l, 1); +typedef int strsize_t; +typedef long zend_long; +#else +#define RV_STRINGL(s,l) RETVAL_STRINGL(s, l); +typedef size_t strsize_t; +#endif + ZEND_DECLARE_MODULE_GLOBALS(libpuzzle) /* True global resources - no need for thread safety here */ @@ -122,7 +132,7 @@ PHP_MINFO_FUNCTION(libpuzzle) PHP_FUNCTION(puzzle_fill_cvec_from_file) { char *arg = NULL; - int arg_len; + strsize_t arg_len; PuzzleContext *context; PuzzleCvec cvec; @@ -137,7 +147,7 @@ PHP_FUNCTION(puzzle_fill_cvec_from_file) puzzle_free_cvec(context, &cvec); RETURN_FALSE; } - RETVAL_STRINGL(cvec.vec, cvec.sizeof_vec, 1); + RV_STRINGL((char *)cvec.vec, cvec.sizeof_vec); puzzle_free_cvec(context, &cvec); } /* }}} */ @@ -147,7 +157,7 @@ PHP_FUNCTION(puzzle_fill_cvec_from_file) PHP_FUNCTION(puzzle_compress_cvec) { char *arg = NULL; - int arg_len; + strsize_t arg_len; PuzzleContext *context; PuzzleCompressedCvec compressed_cvec; PuzzleCvec cvec; @@ -160,7 +170,7 @@ PHP_FUNCTION(puzzle_compress_cvec) } puzzle_init_compressed_cvec(context, &compressed_cvec); puzzle_init_cvec(context, &cvec); - cvec.vec = arg; + cvec.vec = (signed char *)arg; cvec.sizeof_vec = (size_t) arg_len; if (puzzle_compress_cvec(context, &compressed_cvec, &cvec) != 0) { puzzle_free_compressed_cvec(context, &compressed_cvec); @@ -168,8 +178,8 @@ PHP_FUNCTION(puzzle_compress_cvec) puzzle_free_cvec(context, &cvec); RETURN_FALSE; } - RETVAL_STRINGL(compressed_cvec.vec, - compressed_cvec.sizeof_compressed_vec, 1); + RV_STRINGL((char *)compressed_cvec.vec, + compressed_cvec.sizeof_compressed_vec); puzzle_free_compressed_cvec(context, &compressed_cvec); cvec.vec = NULL; puzzle_free_cvec(context, &cvec); @@ -181,7 +191,7 @@ PHP_FUNCTION(puzzle_compress_cvec) PHP_FUNCTION(puzzle_uncompress_cvec) { char *arg = NULL; - int arg_len; + strsize_t arg_len; PuzzleContext *context; PuzzleCompressedCvec compressed_cvec; PuzzleCvec cvec; @@ -194,7 +204,7 @@ PHP_FUNCTION(puzzle_uncompress_cvec) } puzzle_init_compressed_cvec(context, &compressed_cvec); puzzle_init_cvec(context, &cvec); - compressed_cvec.vec = arg; + compressed_cvec.vec = (unsigned char *)arg; compressed_cvec.sizeof_compressed_vec = (size_t) arg_len; if (puzzle_uncompress_cvec(context, &compressed_cvec, &cvec) != 0) { puzzle_free_cvec(context, &cvec); @@ -202,7 +212,7 @@ PHP_FUNCTION(puzzle_uncompress_cvec) puzzle_free_compressed_cvec(context, &compressed_cvec); RETURN_FALSE; } - RETVAL_STRINGL(cvec.vec, cvec.sizeof_vec, 1); + RV_STRINGL((char *)cvec.vec, cvec.sizeof_vec); puzzle_free_cvec(context, &cvec); compressed_cvec.vec = NULL; puzzle_free_compressed_cvec(context, &compressed_cvec); @@ -214,7 +224,7 @@ PHP_FUNCTION(puzzle_uncompress_cvec) PHP_FUNCTION(puzzle_vector_normalized_distance) { char *vec1 = NULL, *vec2 = NULL; - int vec1_len, vec2_len; + strsize_t vec1_len, vec2_len; PuzzleContext *context; PuzzleCvec cvec1, cvec2; double d; @@ -232,9 +242,9 @@ PHP_FUNCTION(puzzle_vector_normalized_distance) } puzzle_init_cvec(context, &cvec1); puzzle_init_cvec(context, &cvec2); - cvec1.vec = vec1; + cvec1.vec = (signed char *)vec1; cvec1.sizeof_vec = (size_t) vec1_len; - cvec2.vec = vec2; + cvec2.vec = (signed char *)vec2; cvec2.sizeof_vec = (size_t) vec2_len; d = puzzle_vector_normalized_distance(context, &cvec1, &cvec2, (int) fix_for_texts); @@ -250,7 +260,7 @@ PHP_FUNCTION(puzzle_vector_normalized_distance) PHP_FUNCTION(puzzle_set_max_width) { PuzzleContext *context; - long width; + zend_long width; context = &LIBPUZZLE_G(global_context); if (zend_parse_parameters @@ -270,7 +280,7 @@ PHP_FUNCTION(puzzle_set_max_width) PHP_FUNCTION(puzzle_set_max_height) { PuzzleContext *context; - long height; + zend_long height; context = &LIBPUZZLE_G(global_context); if (zend_parse_parameters @@ -290,7 +300,7 @@ PHP_FUNCTION(puzzle_set_max_height) PHP_FUNCTION(puzzle_set_lambdas) { PuzzleContext *context; - long lambdas; + zend_long lambdas; context = &LIBPUZZLE_G(global_context); if (zend_parse_parameters -- 2.9.3