summaryrefslogtreecommitdiffstats
path: root/9f0f5e450b0c27a565d9ffc5644be9cdc8345d71.patch
blob: 932955193e190eabf8090b9fc2f4402e3ce07c2f (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
From 9f0f5e450b0c27a565d9ffc5644be9cdc8345d71 Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@php.net>
Date: Fri, 29 Jun 2018 09:36:49 +0200
Subject: [PATCH] fix for 7.3 php_url fields are zend_string + some -Wformat
 issues

---
 php_stomp.c | 18 +++++++++++++-----
 stomp.c     |  4 ++--
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/php_stomp.c b/php_stomp.c
index 0213d13..7a6de74 100644
--- a/php_stomp.c
+++ b/php_stomp.c
@@ -75,7 +75,7 @@
 	efree(frame.headers);
 
 #define THROW_STOMP_EXCEPTION(excobj, errnum, error) \
-	ZVAL_OBJ(excobj, zend_throw_exception_ex(stomp_ce_exception, errnum , error));
+	ZVAL_OBJ(excobj, zend_throw_exception_ex(stomp_ce_exception, errnum, "%s", error));
 
 #define STOMP_ERROR(errno, msg) \
 	STOMP_G(error_no) = errno; \
@@ -101,6 +101,12 @@
         } \
     }
 
+#if PHP_VERSION_ID < 70300
+#define STOMP_URL_STR(a) (a)
+#else
+#define STOMP_URL_STR(a) ZSTR_VAL(a)
+#endif
+
 static int le_stomp;
 static zend_object_handlers stomp_obj_handlers;
 
@@ -484,7 +490,7 @@ PHP_FUNCTION(stomp_connect)
 	zend_string_release(broker);
 
 	if (url_parts->scheme) {
-		if (strcmp(url_parts->scheme, "ssl") == 0) {
+		if (strcmp(STOMP_URL_STR(url_parts->scheme), "ssl") == 0) {
 #if HAVE_STOMP_SSL
 			use_ssl = 1;
 #else
@@ -492,7 +498,7 @@ PHP_FUNCTION(stomp_connect)
 			php_url_free(url_parts);
 			return;
 #endif        
-		} else if (strcmp(url_parts->scheme, "tcp") != 0) {
+		} else if (strcmp(STOMP_URL_STR(url_parts->scheme), "tcp") != 0) {
 			STOMP_ERROR(0, PHP_STOMP_ERR_INVALID_BROKER_URI_SCHEME);
 			php_url_free(url_parts);
 			return;
@@ -510,7 +516,7 @@ PHP_FUNCTION(stomp_connect)
 	stomp->options.connect_timeout_sec  = STOMP_G(connection_timeout_sec);
 	stomp->options.connect_timeout_usec = STOMP_G(connection_timeout_usec);
 
-	stomp->status = stomp_connect(stomp, url_parts->host, url_parts->port ? url_parts->port : 61613 );
+	stomp->status = stomp_connect(stomp, STOMP_URL_STR(url_parts->host), url_parts->port ? url_parts->port : 61613 );
 	php_url_free(url_parts);
 
 	if (stomp->status) {
@@ -908,7 +914,7 @@ PHP_FUNCTION(stomp_read_frame)
 	if (class_name && ZSTR_LEN(class_name)) {
 		ce = zend_fetch_class(class_name, ZEND_FETCH_CLASS_AUTO);
 		if (!ce) {
-			php_error_docref(NULL , E_WARNING, "Could not find class '%s'", class_name);
+			php_error_docref(NULL , E_WARNING, "Could not find class '%s'", ZSTR_VAL(class_name));
 			ce = stomp_ce_frame;
 		}
 	} else if (stomp_object) {
@@ -979,7 +985,9 @@ PHP_FUNCTION(stomp_read_frame)
 				fci.retval = &retval;
 				fci.no_separation = 1;
 
+#if PHP_VERSION_ID < 70300
 				fcc.initialized = 1;
+#endif
 				fcc.function_handler = ce->constructor;
 #if (PHP_MAJOR_VERSION == 7 && PHP_MINOR_VERSION == 0)
 				fcc.calling_scope = EG(scope);
diff --git a/stomp.c b/stomp.c
index be822e0..4831f2f 100644
--- a/stomp.c
+++ b/stomp.c
@@ -209,7 +209,7 @@ int stomp_connect(stomp_t *stomp, const char *host, unsigned short port TSRMLS_D
 
 	stomp->fd = php_network_connect_socket_to_host(stomp->host, stomp->port, SOCK_STREAM, 0, &tv, NULL, NULL, NULL, 0, 0);
 	if (stomp->fd == -1) {
-		snprintf(error, sizeof(error), "Unable to connect to %s:%ld", stomp->host, stomp->port);
+		snprintf(error, sizeof(error), "Unable to connect to %s:%d", stomp->host, stomp->port);
 		stomp_set_error(stomp, error, errno, "%s", strerror(errno));
 		return 0;
 	}
@@ -257,7 +257,7 @@ int stomp_connect(stomp_t *stomp, const char *host, unsigned short port TSRMLS_D
 #endif
 		return 1;
 	} else {
-		snprintf(error, sizeof(error), "Unable to connect to %s:%ld", stomp->host, stomp->port);
+		snprintf(error, sizeof(error), "Unable to connect to %s:%d", stomp->host, stomp->port);
 		stomp_set_error(stomp, error, errno, "%s", strerror(errno));
 		return 0;
 	}