From f84c910a305a8dbae3a4d8548764b0603819e05f Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@fedoraproject.org>
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 <puzzle.h>
#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