* [Buildroot] [PATCH 05/11] package/php-ssh2: bump version to 1.3.1
2021-06-29 16:50 [Buildroot] [PATCH 01/11] package/php-amqp: bump version to 1.10.2 Adam Duskett
` (2 preceding siblings ...)
2021-06-29 16:50 ` [Buildroot] [PATCH 04/11] package/php-memcached: bump version to 3.1.5 Adam Duskett
@ 2021-06-29 16:50 ` Adam Duskett
2021-06-29 16:50 ` [Buildroot] [PATCH 06/11] package/php-xdebug: bump version to 3.0.4 Adam Duskett
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Adam Duskett @ 2021-06-29 16:50 UTC (permalink / raw)
To: buildroot
Other changes:
- Remove both upstream patches
Signed-off-by: Adam Duskett <aduskett@gmail.com>
---
...fix-php_url-fields-usage-for-PHP-7-3.patch | 302 -------
| 746 ------------------
package/php-ssh2/php-ssh2.hash | 2 +-
package/php-ssh2/php-ssh2.mk | 2 +-
4 files changed, 2 insertions(+), 1050 deletions(-)
delete mode 100644 package/php-ssh2/0001-fix-php_url-fields-usage-for-PHP-7-3.patch
delete mode 100644 package/php-ssh2/0002-dstogov-Fixed-PHP7-port-Restored-commented-reference-counting.patch
diff --git a/package/php-ssh2/0001-fix-php_url-fields-usage-for-PHP-7-3.patch b/package/php-ssh2/0001-fix-php_url-fields-usage-for-PHP-7-3.patch
deleted file mode 100644
index afc5de9915..0000000000
--- a/package/php-ssh2/0001-fix-php_url-fields-usage-for-PHP-7-3.patch
+++ /dev/null
@@ -1,302 +0,0 @@
-From a8835aab2c15e794fce13bd927295719e384ad2d Mon Sep 17 00:00:00 2001
-From: Remi Collet <remi@php.net>
-Date: Thu, 28 Jun 2018 07:10:35 +0200
-Subject: [PATCH] fix php_url fields usage for PHP 7.3
-
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-[Retrieved from:
-https://github.com/php/pecl-networking-ssh2/commit/a8835aab2c15e794fce13bd927295719e384ad2d]
----
- php_ssh2.h | 8 +++++++
- ssh2_fopen_wrappers.c | 55 +++++++++++++++++++++++++++----------------
- ssh2_sftp.c | 20 ++++++++--------
- 3 files changed, 53 insertions(+), 30 deletions(-)
-
-diff --git a/php_ssh2.h b/php_ssh2.h
-index 734b795..d010ff9 100644
---- a/php_ssh2.h
-+++ b/php_ssh2.h
-@@ -166,6 +166,14 @@ extern php_stream_wrapper php_ssh2_sftp_wrapper;
- extern int le_ssh2_session;
- extern int le_ssh2_sftp;
-
-+#if PHP_VERSION_ID < 70300
-+#define SSH2_URL_STR(a) (a)
-+#define SSH2_URL_LEN(a) strlen(a)
-+#else
-+#define SSH2_URL_STR(a) ZSTR_VAL(a)
-+#define SSH2_URL_LEN(a) ZSTR_LEN(a)
-+#endif
-+
- #endif /* PHP_SSH2_H */
-
- /*
-diff --git a/ssh2_fopen_wrappers.c b/ssh2_fopen_wrappers.c
-index 2f96ca4..f2f3475 100644
---- a/ssh2_fopen_wrappers.c
-+++ b/ssh2_fopen_wrappers.c
-@@ -215,7 +215,7 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- php_url *resource;
- zval *methods = NULL, *callbacks = NULL, zsession, *tmpzval;
- zend_long resource_id;
-- char *h, *s, *username = NULL, *password = NULL, *pubkey_file = NULL, *privkey_file = NULL;
-+ char *h, *username = NULL, *password = NULL, *pubkey_file = NULL, *privkey_file = NULL;
- int username_len = 0, password_len = 0;
-
- h = strstr(path, "Resource id #");
-@@ -233,13 +233,13 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- return NULL;
- }
-
-- if (strncmp(resource->scheme, "ssh2.", sizeof("ssh2.") - 1)) {
-+ if (strncmp(SSH2_URL_STR(resource->scheme), "ssh2.", sizeof("ssh2.") - 1)) {
- /* Not an ssh wrapper */
- php_url_free(resource);
- return NULL;
- }
-
-- if (strcmp(resource->scheme + sizeof("ssh2.") - 1, type)) {
-+ if (strcmp(SSH2_URL_STR(resource->scheme) + sizeof("ssh2.") - 1, type)) {
- /* Wrong ssh2. wrapper type */
- php_url_free(resource);
- return NULL;
-@@ -253,13 +253,27 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- Find resource->path in the path string, then copy the entire string from the original path.
- This includes ?query#fragment in the path string
- */
-+// TODO copy seems uneeded
-+#if PHP_VERSION_ID < 70300
-+ {
-+ char * s;
-+
- s = resource->path;
- resource->path = estrdup(strstr(path, resource->path));
- efree(s);
-+ }
-+#else
-+ {
-+ zend_string *tmp;
-+
-+ tmp = resource->path;
-+ resource->path = zend_string_init(ZSTR_VAL(resource->path), ZSTR_LEN(resource->path), 0);
-+ zend_string_release(tmp);
-+ }
-+#endif
-
- /* Look for a resource ID to reuse a session */
-- s = resource->host;
-- if (is_numeric_string(s, strlen(s), &resource_id, NULL, 0) == IS_LONG) {
-+ if (is_numeric_string(SSH2_URL_STR(resource->host), SSH2_URL_LEN(resource->host), &resource_id, NULL, 0) == IS_LONG) {
- php_ssh2_sftp_data *sftp_data;
- zval *zresource;
-
-@@ -309,7 +323,7 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- }
-
- /* Fallback on finding it in the context */
-- if (resource->host[0] == 0 && context && psftp &&
-+ if (SSH2_URL_STR(resource->host)[0] == 0 && context && psftp &&
- (tmpzval = php_stream_context_get_option(context, "ssh2", "sftp")) != NULL &&
- Z_TYPE_P(tmpzval) == IS_RESOURCE) {
- php_ssh2_sftp_data *sftp_data;
-@@ -323,7 +337,7 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- return resource;
- }
- }
-- if (resource->host[0] == 0 && context &&
-+ if (SSH2_URL_STR(resource->host)[0] == 0 && context &&
- (tmpzval = php_stream_context_get_option(context, "ssh2", "session")) != NULL &&
- Z_TYPE_P(tmpzval) == IS_RESOURCE) {
- session = (LIBSSH2_SESSION *)zend_fetch_resource(Z_RES_P(tmpzval), PHP_SSH2_SESSION_RES_NAME, le_ssh2_session);
-@@ -399,19 +413,19 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- }
-
- if (resource->user) {
-- int len = strlen(resource->user);
-+ int len = SSH2_URL_LEN(resource->user);
-
- if (len) {
-- username = resource->user;
-+ username = SSH2_URL_STR(resource->user);
- username_len = len;
- }
- }
-
- if (resource->pass) {
-- int len = strlen(resource->pass);
-+ int len = SSH2_URL_LEN(resource->pass);
-
- if (len) {
-- password = resource->pass;
-+ password = SSH2_URL_STR(resource->pass);
- password_len = len;
- }
- }
-@@ -422,7 +436,7 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- return NULL;
- }
-
-- session = php_ssh2_session_connect(resource->host, resource->port, methods, callbacks);
-+ session = php_ssh2_session_connect(SSH2_URL_STR(resource->host), resource->port, methods, callbacks);
- if (!session) {
- /* Unable to connect! */
- php_url_free(resource);
-@@ -482,6 +496,7 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- *psftp = sftp;
- }
-
-+ //TODO may be undefined
- *presource_id = Z_LVAL(zsession);
- *psession = session;
-
-@@ -527,7 +542,7 @@ static php_stream *php_ssh2_shell_open(LIBSSH2_SESSION *session, int resource_id
- zval_copy_ctor(©val);
- convert_to_string(©val);
- if (libssh2_channel_setenv_ex(channel, key->val, key->len, Z_STRVAL(copyval), Z_STRLEN(copyval))) {
-- php_error_docref(NULL, E_WARNING, "Failed setting %s=%s on remote end", key, Z_STRVAL(copyval));
-+ php_error_docref(NULL, E_WARNING, "Failed setting %s=%s on remote end", ZSTR_VAL(key), Z_STRVAL(copyval));
- }
- zval_dtor(©val);
- }
-@@ -631,7 +646,7 @@ static php_stream *php_ssh2_fopen_wrapper_shell(php_stream_wrapper *wrapper, con
- zval_ptr_dtor(©val);
- }
-
-- s = resource->path ? resource->path : NULL;
-+ s = resource->path ? SSH2_URL_STR(resource->path) : NULL;
-
- if (s && s[0] == '/') {
- /* Terminal type encoded into URL overrides context terminal type */
-@@ -766,7 +781,7 @@ static php_stream *php_ssh2_exec_command(LIBSSH2_SESSION *session, int resource_
- zval_copy_ctor(©val);
- convert_to_string(©val);
- if (libssh2_channel_setenv_ex(channel, key->val, key->len, Z_STRVAL(copyval), Z_STRLEN(copyval))) {
-- php_error_docref(NULL, E_WARNING, "Failed setting %s=%s on remote end", key, Z_STRVAL(copyval));
-+ php_error_docref(NULL, E_WARNING, "Failed setting %s=%s on remote end", ZSTR_VAL(key), Z_STRVAL(copyval));
- }
- zval_dtor(©val);
- }
-@@ -878,7 +893,7 @@ static php_stream *php_ssh2_fopen_wrapper_exec(php_stream_wrapper *wrapper, cons
- zval_ptr_dtor(copyval);
- }
-
-- stream = php_ssh2_exec_command(session, resource_id, resource->path + 1, terminal, terminal_len, environment, width, height, type);
-+ stream = php_ssh2_exec_command(session, resource_id, SSH2_URL_STR(resource->path) + 1, terminal, terminal_len, environment, width, height, type);
- if (!stream) {
- // TODO Sean-Der
- //zend_list_delete(resource_id);
-@@ -1021,7 +1036,7 @@ static php_stream *php_ssh2_fopen_wrapper_scp(php_stream_wrapper *wrapper, const
- return NULL;
- }
-
-- stream = php_ssh2_scp_xfer(session, resource_id, resource->path);
-+ stream = php_ssh2_scp_xfer(session, resource_id, SSH2_URL_STR(resource->path));
- if (!stream) {
- //TODO Sean-Der
- //zend_list_delete(resource_id);
-@@ -1147,7 +1162,7 @@ PHP_FUNCTION(ssh2_scp_send)
- char *error_msg = NULL;
-
- last_error = libssh2_session_last_error(session, &error_msg, NULL, 0);
-- php_error_docref(NULL, E_WARNING, "Failure creating remote file: %s", error_msg);
-+ php_error_docref(NULL, E_WARNING, "Failure creating remote file: %s (%d)", error_msg, last_error);
- php_stream_close(local_file);
- RETURN_FALSE;
- }
-@@ -1262,10 +1277,10 @@ static php_stream *php_ssh2_fopen_wrapper_tunnel(php_stream_wrapper *wrapper, co
- return NULL;
- }
-
-- if (resource->path && resource->path[0] == '/') {
-+ if (resource->path && SSH2_URL_STR(resource->path)[0] == '/') {
- char *colon;
-
-- host = resource->path + 1;
-+ host = SSH2_URL_STR(resource->path) + 1;
- if (*host == '[') {
- /* IPv6 Encapsulated Format */
- host++;
-diff --git a/ssh2_sftp.c b/ssh2_sftp.c
-index 13f89f0..6332be8 100644
---- a/ssh2_sftp.c
-+++ b/ssh2_sftp.c
-@@ -238,7 +238,7 @@ static php_stream *php_ssh2_sftp_stream_opener(php_stream_wrapper *wrapper, cons
-
- flags = php_ssh2_parse_fopen_modes((char *)mode);
-
-- handle = libssh2_sftp_open(sftp, resource->path, flags, perms);
-+ handle = libssh2_sftp_open(sftp, SSH2_URL_STR(resource->path), flags, perms);
- if (!handle) {
- php_error_docref(NULL, E_WARNING, "Unable to open %s on remote host", filename);
- php_url_free(resource);
-@@ -341,7 +341,7 @@ static php_stream *php_ssh2_sftp_dirstream_opener(php_stream_wrapper *wrapper, c
- return NULL;
- }
-
-- handle = libssh2_sftp_opendir(sftp, resource->path);
-+ handle = libssh2_sftp_opendir(sftp, SSH2_URL_STR(resource->path));
- if (!handle) {
- php_error_docref(NULL, E_WARNING, "Unable to open %s on remote host", filename);
- php_url_free(resource);
-@@ -386,7 +386,7 @@ static int php_ssh2_sftp_urlstat(php_stream_wrapper *wrapper, const char *url, i
- return -1;
- }
-
-- if (libssh2_sftp_stat_ex(sftp, resource->path, strlen(resource->path),
-+ if (libssh2_sftp_stat_ex(sftp, SSH2_URL_STR(resource->path), SSH2_URL_LEN(resource->path),
- (flags & PHP_STREAM_URL_STAT_LINK) ? LIBSSH2_SFTP_LSTAT : LIBSSH2_SFTP_STAT, &attrs)) {
- php_url_free(resource);
- //zend_list_delete(sftp_rsrcid);
-@@ -420,7 +420,7 @@ static int php_ssh2_sftp_unlink(php_stream_wrapper *wrapper, const char *url, in
- return 0;
- }
-
-- result = libssh2_sftp_unlink(sftp, resource->path);
-+ result = libssh2_sftp_unlink(sftp, SSH2_URL_STR(resource->path));
- php_url_free(resource);
-
- //zend_list_delete(sftp_rsrcid);
-@@ -462,7 +462,7 @@ static int php_ssh2_sftp_rename(php_stream_wrapper *wrapper, const char *url_fro
- return 0;
- }
-
-- result = libssh2_sftp_rename(sftp, resource->path, resource_to->path);
-+ result = libssh2_sftp_rename(sftp, SSH2_URL_STR(resource->path), SSH2_URL_STR(resource_to->path));
- php_url_free(resource);
- php_url_free(resource_to);
-
-@@ -493,13 +493,13 @@ static int php_ssh2_sftp_mkdir(php_stream_wrapper *wrapper, const char *url, int
-
- if (options & PHP_STREAM_MKDIR_RECURSIVE) {
- /* Just attempt to make every directory, some will fail, but we only care about the last success/failure */
-- char *p = resource->path;
-+ char *p = SSH2_URL_STR(resource->path);
- while ((p = strchr(p + 1, '/'))) {
-- libssh2_sftp_mkdir_ex(sftp, resource->path, p - resource->path, mode);
-+ libssh2_sftp_mkdir_ex(sftp, SSH2_URL_STR(resource->path), p - SSH2_URL_STR(resource->path), mode);
- }
- }
-
-- result = libssh2_sftp_mkdir(sftp, resource->path, mode);
-+ result = libssh2_sftp_mkdir(sftp, SSH2_URL_STR(resource->path), mode);
- php_url_free(resource);
-
- //zend_list_delete(sftp_rsrcid);
-@@ -527,7 +527,7 @@ static int php_ssh2_sftp_rmdir(php_stream_wrapper *wrapper, const char *url, int
- return 0;
- }
-
-- result = libssh2_sftp_rmdir(sftp, resource->path);
-+ result = libssh2_sftp_rmdir(sftp, SSH2_URL_STR(resource->path));
- php_url_free(resource);
-
- //zend_list_delete(sftp_rsrcid);
-@@ -836,7 +836,7 @@ PHP_FUNCTION(ssh2_sftp_readlink)
- }
-
- if ((targ_len = libssh2_sftp_symlink_ex(data->sftp, link->val, link->len, targ, 8192, LIBSSH2_SFTP_READLINK)) < 0) {
-- php_error_docref(NULL, E_WARNING, "Unable to read link '%s'", link);
-+ php_error_docref(NULL, E_WARNING, "Unable to read link '%s'", ZSTR_VAL(link));
- RETURN_FALSE;
- }
-
diff --git a/package/php-ssh2/0002-dstogov-Fixed-PHP7-port-Restored-commented-reference-counting.patch b/package/php-ssh2/0002-dstogov-Fixed-PHP7-port-Restored-commented-reference-counting.patch
deleted file mode 100644
index d6d62947f7..0000000000
--- a/package/php-ssh2/0002-dstogov-Fixed-PHP7-port-Restored-commented-reference-counting.patch
+++ /dev/null
@@ -1,746 +0,0 @@
-From 073067ba96ac99ed5696d27f13ca6c8124986e74 Mon Sep 17 00:00:00 2001
-From: Jan-E <github@ehrhardt.nl>
-Date: Thu, 28 Jun 2018 08:43:48 +0200
-Subject: [PATCH] @dstogov Fixed PHP7 port. Restored commented reference
- counting.
-
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-[Retrieved from:
-https://github.com/php/pecl-networking-ssh2/commit/073067ba96ac99ed5696d27f13ca6c8124986e74]
----
- php_ssh2.h | 14 ++---
- ssh2.c | 26 ++++-----
- ssh2_fopen_wrappers.c | 129 ++++++++++++++++++------------------------
- ssh2_sftp.c | 59 +++++++++----------
- 4 files changed, 102 insertions(+), 126 deletions(-)
-
-diff --git a/php_ssh2.h b/php_ssh2.h
-index d010ff9..2bbaa26 100644
---- a/php_ssh2.h
-+++ b/php_ssh2.h
-@@ -73,14 +73,14 @@ typedef struct _php_ssh2_sftp_data {
- LIBSSH2_SESSION *session;
- LIBSSH2_SFTP *sftp;
-
-- int session_rsrcid;
-+ zend_resource *session_rsrc;
- } php_ssh2_sftp_data;
-
- typedef struct _php_ssh2_listener_data {
- LIBSSH2_SESSION *session;
- LIBSSH2_LISTENER *listener;
-
-- int session_rsrcid;
-+ zend_resource *session_rsrc;
- } php_ssh2_listener_data;
-
- #include "libssh2_publickey.h"
-@@ -89,7 +89,7 @@ typedef struct _php_ssh2_pkey_subsys_data {
- LIBSSH2_SESSION *session;
- LIBSSH2_PUBLICKEY *pkey;
-
-- int session_rsrcid;
-+ zend_resource *session_rsrc;
- } php_ssh2_pkey_subsys_data;
-
- #define SSH2_FETCH_NONAUTHENTICATED_SESSION(session, zsession) \
-@@ -118,8 +118,8 @@ typedef struct _php_ssh2_channel_data {
- char is_blocking;
- long timeout;
-
-- /* Resource ID */
-- int session_rsrcid;
-+ /* Resource */
-+ zend_resource *session_rsrc;
-
- /* Allow one stream to be closed while the other is kept open */
- unsigned char *refcount;
-@@ -151,8 +151,8 @@ PHP_FUNCTION(ssh2_sftp_realpath);
- LIBSSH2_SESSION *php_ssh2_session_connect(char *host, int port, zval *methods, zval *callbacks);
- void php_ssh2_sftp_dtor(zend_resource *rsrc);
- php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stream_context *context,
-- LIBSSH2_SESSION **psession, int *presource_id,
-- LIBSSH2_SFTP **psftp, int *psftp_rsrcid);
-+ LIBSSH2_SESSION **psession, zend_resource **presource,
-+ LIBSSH2_SFTP **psftp, zend_resource **psftp_rsrc);
-
- extern php_stream_ops php_ssh2_channel_stream_ops;
-
-diff --git a/ssh2.c b/ssh2.c
-index e73867e..849766b 100644
---- a/ssh2.c
-+++ b/ssh2.c
-@@ -772,9 +772,8 @@ PHP_FUNCTION(ssh2_forward_listen)
-
- data = emalloc(sizeof(php_ssh2_listener_data));
- data->session = session;
-- data->session_rsrcid = Z_LVAL_P(zsession);
-- //TODO Sean-Der
-- //zend_list_addref(data->session_rsrcid);
-+ data->session_rsrc = Z_RES_P(zsession);
-+ Z_ADDREF_P(zsession);
- data->listener = listener;
-
- RETURN_RES(zend_register_resource(data, le_ssh2_listener));
-@@ -810,7 +809,7 @@ PHP_FUNCTION(ssh2_forward_accept)
- channel_data->channel = channel;
- channel_data->streamid = 0;
- channel_data->is_blocking = 0;
-- channel_data->session_rsrcid = data->session_rsrcid;
-+ channel_data->session_rsrc = data->session_rsrc;
- channel_data->refcount = NULL;
-
- stream = php_stream_alloc(&php_ssh2_channel_stream_ops, channel_data, 0, "r+");
-@@ -820,8 +819,12 @@ PHP_FUNCTION(ssh2_forward_accept)
- libssh2_channel_free(channel);
- RETURN_FALSE;
- }
-- //TODO Sean-Der
-- //zend_list_addref(channel_data->session_rsrcid);
-+
-+#if PHP_VERSION_ID < 70300
-+ GC_REFCOUNT(channel_data->session_rsrc)++;
-+#else
-+ GC_ADDREF(channel_data->session_rsrc);
-+#endif
-
- php_stream_to_zval(stream, return_value);
- }
-@@ -975,9 +978,8 @@ PHP_FUNCTION(ssh2_publickey_init)
-
- data = emalloc(sizeof(php_ssh2_pkey_subsys_data));
- data->session = session;
-- data->session_rsrcid = Z_RES_P(zsession)->handle;
-- //TODO Sean-Der
-- //zend_list_addref(data->session_rsrcid);
-+ data->session_rsrc = Z_RES_P(zsession);
-+ Z_ADDREF_P(zsession);
- data->pkey = pkey;
-
- RETURN_RES(zend_register_resource(data, le_ssh2_pkey_subsys));
-@@ -1280,8 +1282,7 @@ static void php_ssh2_listener_dtor(zend_resource *rsrc)
- LIBSSH2_LISTENER *listener = data->listener;
-
- libssh2_channel_forward_cancel(listener);
-- // TODO Sean-Der
-- //zend_list_delete(data->session_rsrcid);
-+ zend_list_delete(data->session_rsrc);
- efree(data);
- }
-
-@@ -1291,8 +1292,7 @@ static void php_ssh2_pkey_subsys_dtor(zend_resource *rsrc)
- LIBSSH2_PUBLICKEY *pkey = data->pkey;
-
- libssh2_publickey_shutdown(pkey);
-- // TODO Sean-Der
-- //zend_list_delete(data->session_rsrcid);
-+ zend_list_delete(data->session_rsrc);
- efree(data);
- }
-
-diff --git a/ssh2_fopen_wrappers.c b/ssh2_fopen_wrappers.c
-index f2f3475..c4eb9dc 100644
---- a/ssh2_fopen_wrappers.c
-+++ b/ssh2_fopen_wrappers.c
-@@ -47,11 +47,9 @@ static size_t php_ssh2_channel_stream_write(php_stream *stream, const char *buf,
- php_ssh2_channel_data *abstract = (php_ssh2_channel_data*)stream->abstract;
- size_t writestate;
- LIBSSH2_SESSION *session;
-- zval *zresource;
-
- libssh2_channel_set_blocking(abstract->channel, abstract->is_blocking);
-- zresource = php_ssh2_zval_from_resource_handle(abstract->session_rsrcid);
-- session = (LIBSSH2_SESSION *)zend_fetch_resource(Z_RES_P(zresource), PHP_SSH2_SESSION_RES_NAME, le_ssh2_session);
-+ session = (LIBSSH2_SESSION *)zend_fetch_resource(abstract->session_rsrc, PHP_SSH2_SESSION_RES_NAME, le_ssh2_session);
-
-
-
-@@ -90,12 +88,10 @@ static size_t php_ssh2_channel_stream_read(php_stream *stream, char *buf, size_t
- php_ssh2_channel_data *abstract = (php_ssh2_channel_data*)stream->abstract;
- ssize_t readstate;
- LIBSSH2_SESSION *session;
-- zval *zresource;
-
- stream->eof = libssh2_channel_eof(abstract->channel);
- libssh2_channel_set_blocking(abstract->channel, abstract->is_blocking);
-- zresource = php_ssh2_zval_from_resource_handle(abstract->session_rsrcid);
-- session = (LIBSSH2_SESSION *)zend_fetch_resource(Z_RES_P(zresource), PHP_SSH2_SESSION_RES_NAME, le_ssh2_session);
-+ session = (LIBSSH2_SESSION *)zend_fetch_resource(abstract->session_rsrc, PHP_SSH2_SESSION_RES_NAME, le_ssh2_session);
-
- #ifdef PHP_SSH2_SESSION_TIMEOUT
- if (abstract->is_blocking) {
-@@ -137,8 +133,7 @@ static int php_ssh2_channel_stream_close(php_stream *stream, int close_handle)
- }
- libssh2_channel_eof(abstract->channel);
- libssh2_channel_free(abstract->channel);
-- //TODO Sean-Der
-- //zend_list_delete(abstract->session_rsrcid);
-+ zend_list_delete(abstract->session_rsrc);
- }
- efree(abstract);
-
-@@ -207,8 +202,8 @@ php_stream_ops php_ssh2_channel_stream_ops = {
- * Parse an ssh2.*:// path
- */
- php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stream_context *context,
-- LIBSSH2_SESSION **psession, int *presource_id,
-- LIBSSH2_SFTP **psftp, int *psftp_rsrcid)
-+ LIBSSH2_SESSION **psession, zend_resource **presource,
-+ LIBSSH2_SFTP **psftp, zend_resource **psftp_rsrc)
- {
- php_ssh2_sftp_data *sftp_data = NULL;
- LIBSSH2_SESSION *session;
-@@ -283,11 +278,10 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- sftp_data = (php_ssh2_sftp_data *)zend_fetch_resource(Z_RES_P(zresource), PHP_SSH2_SFTP_RES_NAME, le_ssh2_sftp);
- if (sftp_data) {
- /* Want the sftp layer */
-- //TODO Sean-Der
-- //zend_list_addref(resource_id);
-- *psftp_rsrcid = resource_id;
-+ Z_ADDREF_P(zresource);
-+ *psftp_rsrc = Z_RES_P(zresource);
- *psftp = sftp_data->sftp;
-- *presource_id = sftp_data->session_rsrcid;
-+ *presource = sftp_data->session_rsrc;
- *psession = sftp_data->session;
- return resource;
- }
-@@ -305,18 +299,16 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- sftp_data = emalloc(sizeof(php_ssh2_sftp_data));
- sftp_data->sftp = sftp;
- sftp_data->session = session;
-- sftp_data->session_rsrcid = resource_id;
-- //TODO Sean-Der
-- //zend_list_addref(resource_id);
-- *psftp_rsrcid = zend_register_resource(sftp_data, le_ssh2_sftp)->handle;
-+ sftp_data->session_rsrc = Z_RES_P(zresource);
-+ Z_ADDREF_P(zresource);
-+ *psftp_rsrc = zend_register_resource(sftp_data, le_ssh2_sftp);
- *psftp = sftp;
-- *presource_id = resource_id;
-+ *presource = Z_RES_P(zresource);
- *psession = session;
- return resource;
- }
-- //TODO Sean-Der
-- //zend_list_addref(resource_id);
-- *presource_id = resource_id;
-+ Z_ADDREF_P(zresource);
-+ *presource = Z_RES_P(zresource);
- *psession = session;
- return resource;
- }
-@@ -330,9 +322,9 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- sftp_data = (php_ssh2_sftp_data *)zend_fetch_resource(Z_RES_P(tmpzval), PHP_SSH2_SFTP_RES_NAME, le_ssh2_sftp);
- if (sftp_data) {
- Z_ADDREF_P(tmpzval);
-- *psftp_rsrcid = Z_LVAL_P(tmpzval);
-+ *psftp_rsrc = Z_RES_P(tmpzval);
- *psftp = sftp_data->sftp;
-- *presource_id = sftp_data->session_rsrcid;
-+ *presource = sftp_data->session_rsrc;
- *psession = sftp_data->session;
- return resource;
- }
-@@ -354,17 +346,17 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- sftp_data = emalloc(sizeof(php_ssh2_sftp_data));
- sftp_data->sftp = sftp;
- sftp_data->session = session;
-- sftp_data->session_rsrcid = Z_LVAL_P(tmpzval);
-+ sftp_data->session_rsrc = Z_RES_P(tmpzval);
- Z_ADDREF_P(tmpzval);
-- *psftp_rsrcid = zend_register_resource(sftp_data, le_ssh2_sftp)->handle;
-+ *psftp_rsrc = zend_register_resource(sftp_data, le_ssh2_sftp);
- *psftp = sftp;
-- *presource_id = Z_RES_P(tmpzval)->handle;
-+ *presource = Z_RES_P(tmpzval);
- *psession = session;
- return resource;
- }
- Z_ADDREF_P(tmpzval);
- *psession = session;
-- *presource_id = Z_LVAL_P(tmpzval);
-+ *presource = Z_RES_P(tmpzval);
- return resource;
- }
- }
-@@ -465,8 +457,7 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
-
- /* Auth failure */
- php_url_free(resource);
-- //TODO Sean-Der
-- //zend_list_delete(Z_LVAL(zsession));
-+ zend_list_delete(Z_RES(zsession));
- return NULL;
-
- session_authed:
-@@ -480,24 +471,22 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- sftp = libssh2_sftp_init(session);
- if (!sftp) {
- php_url_free(resource);
-- //TODO Sean-Der
-- //zend_list_delete(Z_LVAL(zsession));
-+ zend_list_delete(Z_RES(zsession));
- return NULL;
- }
-
- sftp_data = emalloc(sizeof(php_ssh2_sftp_data));
- sftp_data->session = session;
- sftp_data->sftp = sftp;
-- sftp_data->session_rsrcid = Z_LVAL(zsession);
-+ sftp_data->session_rsrc = Z_RES(zsession);
-
- //TODO Sean-Der
- //ZEND_REGISTER_RESOURCE(sftp_data, le_ssh2_sftp);
-- *psftp_rsrcid = Z_LVAL(zsftp);
-+ *psftp_rsrc = Z_RES(zsftp);
- *psftp = sftp;
- }
-
-- //TODO may be undefined
-- *presource_id = Z_LVAL(zsession);
-+ *presource = Z_RES(zsession);
- *psession = session;
-
- return resource;
-@@ -511,7 +500,7 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, php_stre
- /* {{{ php_ssh2_shell_open
- * Make a stream from a session
- */
--static php_stream *php_ssh2_shell_open(LIBSSH2_SESSION *session, int resource_id, char *term, int term_len, zval *environment, long width, long height, long type)
-+static php_stream *php_ssh2_shell_open(LIBSSH2_SESSION *session, zend_resource *resource, char *term, int term_len, zval *environment, long width, long height, long type)
- {
- LIBSSH2_CHANNEL *channel;
- php_ssh2_channel_data *channel_data;
-@@ -578,7 +567,7 @@ static php_stream *php_ssh2_shell_open(LIBSSH2_SESSION *session, int resource_id
- channel_data->streamid = 0;
- channel_data->is_blocking = 0;
- channel_data->timeout = 0;
-- channel_data->session_rsrcid = resource_id;
-+ channel_data->session_rsrc = resource;
- channel_data->refcount = NULL;
-
- stream = php_stream_alloc(&php_ssh2_channel_stream_ops, channel_data, 0, "r+");
-@@ -599,11 +588,12 @@ static php_stream *php_ssh2_fopen_wrapper_shell(php_stream_wrapper *wrapper, con
- zend_long width = PHP_SSH2_DEFAULT_TERM_WIDTH;
- zend_long height = PHP_SSH2_DEFAULT_TERM_HEIGHT;
- zend_long type = PHP_SSH2_DEFAULT_TERM_UNIT;
-- int resource_id = 0, terminal_len = sizeof(PHP_SSH2_DEFAULT_TERMINAL) - 1;
-+ zend_resource *rsrc = NULL;
-+ int terminal_len = sizeof(PHP_SSH2_DEFAULT_TERMINAL) - 1;
- php_url *resource;
- char *s;
-
-- resource = php_ssh2_fopen_wraper_parse_path(path, "shell", context, &session, &resource_id, NULL, NULL);
-+ resource = php_ssh2_fopen_wraper_parse_path(path, "shell", context, &session, &rsrc, NULL, NULL);
- if (!resource || !session) {
- return NULL;
- }
-@@ -677,10 +667,9 @@ static php_stream *php_ssh2_fopen_wrapper_shell(php_stream_wrapper *wrapper, con
- /* TODO: Accept resolution and environment vars as URL style parameters
- * ssh2.shell://hostorresource/terminal/99x99c?envvar=envval&envvar=envval....
- */
-- stream = php_ssh2_shell_open(session, resource_id, terminal, terminal_len, environment, width, height, type);
-+ stream = php_ssh2_shell_open(session, rsrc, terminal, terminal_len, environment, width, height, type);
- if (!stream) {
-- //TODO Sean-Der
-- //zend_list_delete(resource_id);
-+ zend_list_delete(rsrc);
- }
- php_url_free(resource);
-
-@@ -730,7 +719,7 @@ PHP_FUNCTION(ssh2_shell)
-
- SSH2_FETCH_AUTHENTICATED_SESSION(session, zsession);
-
-- stream = php_ssh2_shell_open(session, Z_RES_P(zsession)->handle, term, term_len, environment, width, height, type);
-+ stream = php_ssh2_shell_open(session, Z_RES_P(zsession), term, term_len, environment, width, height, type);
- if (!stream) {
- RETURN_FALSE;
- }
-@@ -749,7 +738,7 @@ PHP_FUNCTION(ssh2_shell)
- /* {{{ php_ssh2_exec_command
- * Make a stream from a session
- */
--static php_stream *php_ssh2_exec_command(LIBSSH2_SESSION *session, int resource_id, char *command, char *term, int term_len, zval *environment, long width, long height, long type)
-+static php_stream *php_ssh2_exec_command(LIBSSH2_SESSION *session, zend_resource *rsrc, char *command, char *term, int term_len, zval *environment, long width, long height, long type)
- {
- LIBSSH2_CHANNEL *channel;
- php_ssh2_channel_data *channel_data;
-@@ -819,7 +808,7 @@ static php_stream *php_ssh2_exec_command(LIBSSH2_SESSION *session, int resource_
- channel_data->streamid = 0;
- channel_data->is_blocking = 0;
- channel_data->timeout = 0;
-- channel_data->session_rsrcid = resource_id;
-+ channel_data->session_rsrc = rsrc;
- channel_data->refcount = NULL;
-
- stream = php_stream_alloc(&php_ssh2_channel_stream_ops, channel_data, 0, "r+");
-@@ -836,7 +825,7 @@ static php_stream *php_ssh2_fopen_wrapper_exec(php_stream_wrapper *wrapper, cons
- LIBSSH2_SESSION *session = NULL;
- php_stream *stream;
- zval *tmpzval, *environment = NULL;
-- int resource_id = 0;
-+ zend_resource *rsrc = NULL;
- php_url *resource;
- char *terminal = NULL;
- int terminal_len = 0;
-@@ -844,14 +833,13 @@ static php_stream *php_ssh2_fopen_wrapper_exec(php_stream_wrapper *wrapper, cons
- long height = PHP_SSH2_DEFAULT_TERM_HEIGHT;
- long type = PHP_SSH2_DEFAULT_TERM_UNIT;
-
-- resource = php_ssh2_fopen_wraper_parse_path(path, "exec", context, &session, &resource_id, NULL, NULL);
-+ resource = php_ssh2_fopen_wraper_parse_path(path, "exec", context, &session, &rsrc, NULL, NULL);
- if (!resource || !session) {
- return NULL;
- }
- if (!resource->path) {
- php_url_free(resource);
-- //TODO Sean-Der
-- //zend_list_delete(resource_id);
-+ zend_list_delete(rsrc);
- return NULL;
- }
-
-@@ -893,10 +881,9 @@ static php_stream *php_ssh2_fopen_wrapper_exec(php_stream_wrapper *wrapper, cons
- zval_ptr_dtor(copyval);
- }
-
-- stream = php_ssh2_exec_command(session, resource_id, SSH2_URL_STR(resource->path) + 1, terminal, terminal_len, environment, width, height, type);
-+ stream = php_ssh2_exec_command(session, rsrc, SSH2_URL_STR(resource->path) + 1, terminal, terminal_len, environment, width, height, type);
- if (!stream) {
-- // TODO Sean-Der
-- //zend_list_delete(resource_id);
-+ zend_list_delete(rsrc);
- }
- php_url_free(resource);
-
-@@ -963,7 +950,7 @@ PHP_FUNCTION(ssh2_exec)
-
- SSH2_FETCH_AUTHENTICATED_SESSION(session, zsession);
-
-- stream = php_ssh2_exec_command(session, Z_RES_P(zsession)->handle, command, term, term_len, environment, width, height, type);
-+ stream = php_ssh2_exec_command(session, Z_RES_P(zsession), command, term, term_len, environment, width, height, type);
- if (!stream) {
- RETURN_FALSE;
- }
-@@ -982,7 +969,7 @@ PHP_FUNCTION(ssh2_exec)
- /* {{{ php_ssh2_scp_xfer
- * Make a stream from a session
- */
--static php_stream *php_ssh2_scp_xfer(LIBSSH2_SESSION *session, int resource_id, char *filename)
-+static php_stream *php_ssh2_scp_xfer(LIBSSH2_SESSION *session, zend_resource *rsrc, char *filename)
- {
- LIBSSH2_CHANNEL *channel;
- php_ssh2_channel_data *channel_data;
-@@ -1002,7 +989,7 @@ static php_stream *php_ssh2_scp_xfer(LIBSSH2_SESSION *session, int resource_id,
- channel_data->streamid = 0;
- channel_data->is_blocking = 0;
- channel_data->timeout = 0;
-- channel_data->session_rsrcid = resource_id;
-+ channel_data->session_rsrc = rsrc;
- channel_data->refcount = NULL;
-
- stream = php_stream_alloc(&php_ssh2_channel_stream_ops, channel_data, 0, "r");
-@@ -1018,28 +1005,26 @@ static php_stream *php_ssh2_fopen_wrapper_scp(php_stream_wrapper *wrapper, const
- {
- LIBSSH2_SESSION *session = NULL;
- php_stream *stream;
-- int resource_id = 0;
-+ zend_resource *rsrc = NULL;
- php_url *resource;
-
- if (strchr(mode, '+') || strchr(mode, 'a') || strchr(mode, 'w')) {
- return NULL;
- }
-
-- resource = php_ssh2_fopen_wraper_parse_path(path, "scp", context, &session, &resource_id, NULL, NULL);
-+ resource = php_ssh2_fopen_wraper_parse_path(path, "scp", context, &session, &rsrc, NULL, NULL);
- if (!resource || !session) {
- return NULL;
- }
- if (!resource->path) {
- php_url_free(resource);
-- //TODO Sean-Der
-- //zend_list_delete(resource_id);
-+ zend_list_delete(rsrc);
- return NULL;
- }
-
-- stream = php_ssh2_scp_xfer(session, resource_id, SSH2_URL_STR(resource->path));
-+ stream = php_ssh2_scp_xfer(session, rsrc, SSH2_URL_STR(resource->path));
- if (!stream) {
-- //TODO Sean-Der
-- //zend_list_delete(resource_id);
-+ zend_list_delete(rsrc);
- }
- php_url_free(resource);
-
-@@ -1231,7 +1216,7 @@ PHP_FUNCTION(ssh2_scp_send)
- /* {{{ php_ssh2_direct_tcpip
- * Make a stream from a session
- */
--static php_stream *php_ssh2_direct_tcpip(LIBSSH2_SESSION *session, int resource_id, char *host, int port)
-+static php_stream *php_ssh2_direct_tcpip(LIBSSH2_SESSION *session, zend_resource *rsrc, char *host, int port)
- {
- LIBSSH2_CHANNEL *channel;
- php_ssh2_channel_data *channel_data;
-@@ -1251,7 +1236,7 @@ static php_stream *php_ssh2_direct_tcpip(LIBSSH2_SESSION *session, int resource_
- channel_data->streamid = 0;
- channel_data->is_blocking = 0;
- channel_data->timeout = 0;
-- channel_data->session_rsrcid = resource_id;
-+ channel_data->session_rsrc = rsrc;
- channel_data->refcount = NULL;
-
- stream = php_stream_alloc(&php_ssh2_channel_stream_ops, channel_data, 0, "r+");
-@@ -1270,9 +1255,9 @@ static php_stream *php_ssh2_fopen_wrapper_tunnel(php_stream_wrapper *wrapper, co
- php_url *resource;
- char *host = NULL;
- int port = 0;
-- int resource_id = 0;
-+ zend_resource *rsrc;
-
-- resource = php_ssh2_fopen_wraper_parse_path(path, "tunnel", context, &session, &resource_id, NULL, NULL);
-+ resource = php_ssh2_fopen_wraper_parse_path(path, "tunnel", context, &session, &rsrc, NULL, NULL);
- if (!resource || !session) {
- return NULL;
- }
-@@ -1303,15 +1288,13 @@ static php_stream *php_ssh2_fopen_wrapper_tunnel(php_stream_wrapper *wrapper, co
- if ((port <= 0) || (port > 65535) || !host || (strlen(host) == 0)) {
- /* Invalid connection criteria */
- php_url_free(resource);
-- //TODO Sean-Der
-- //zend_list_delete(resource_id);
-+ zend_list_delete(rsrc);
- return NULL;
- }
-
-- stream = php_ssh2_direct_tcpip(session, resource_id, host, port);
-+ stream = php_ssh2_direct_tcpip(session, rsrc, host, port);
- if (!stream) {
-- // TODO Sean-Der
-- //zend_list_delete(resource_id);
-+ zend_list_delete(rsrc);
- }
- php_url_free(resource);
-
-@@ -1352,7 +1335,7 @@ PHP_FUNCTION(ssh2_tunnel)
-
- SSH2_FETCH_AUTHENTICATED_SESSION(session, zsession);
-
-- stream = php_ssh2_direct_tcpip(session, Z_RES_P(zsession)->handle, host, port);
-+ stream = php_ssh2_direct_tcpip(session, Z_RES_P(zsession), host, port);
- if (!stream) {
- RETURN_FALSE;
- }
-diff --git a/ssh2_sftp.c b/ssh2_sftp.c
-index 6332be8..256fc70 100644
---- a/ssh2_sftp.c
-+++ b/ssh2_sftp.c
-@@ -40,8 +40,7 @@ void php_ssh2_sftp_dtor(zend_resource *rsrc)
-
- libssh2_sftp_shutdown(data->sftp);
-
-- // TODO Sean-Der
-- //zend_list_delete(data->session_rsrcid);
-+ zend_list_delete(data->session_rsrc);
-
- efree(data);
- }
-@@ -50,7 +49,7 @@ void php_ssh2_sftp_dtor(zend_resource *rsrc)
- * SFTP File Ops *
- ***************** */
-
--inline unsigned long php_ssh2_parse_fopen_modes(char *openmode) {
-+unsigned long php_ssh2_parse_fopen_modes(char *openmode) {
- unsigned long flags = 0;
-
- if (strchr(openmode, 'a')) {
-@@ -101,7 +100,7 @@ inline int php_ssh2_sftp_attr2ssb(php_stream_statbuf *ssb, LIBSSH2_SFTP_ATTRIBUT
- typedef struct _php_ssh2_sftp_handle_data {
- LIBSSH2_SFTP_HANDLE *handle;
-
-- long sftp_rsrcid;
-+ zend_resource *sftp_rsrc;
- } php_ssh2_sftp_handle_data;
-
- /* {{{ php_ssh2_sftp_stream_write
-@@ -139,8 +138,7 @@ static int php_ssh2_sftp_stream_close(php_stream *stream, int close_handle)
- php_ssh2_sftp_handle_data *data = (php_ssh2_sftp_handle_data*)stream->abstract;
-
- libssh2_sftp_close(data->handle);
-- //TODO Sean-Der
-- //zend_list_delete(data->sftp_rsrcid);
-+ zend_list_delete(data->sftp_rsrc);
- efree(data);
-
- return 0;
-@@ -226,12 +224,12 @@ static php_stream *php_ssh2_sftp_stream_opener(php_stream_wrapper *wrapper, cons
- LIBSSH2_SFTP *sftp = NULL;
- LIBSSH2_SFTP_HANDLE *handle;
- php_stream *stream;
-- int resource_id = 0, sftp_rsrcid = 0;
-+ zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
- php_url *resource;
- unsigned long flags;
- long perms = 0644;
-
-- resource = php_ssh2_fopen_wraper_parse_path(filename, "sftp", context, &session, &resource_id, &sftp, &sftp_rsrcid);
-+ resource = php_ssh2_fopen_wraper_parse_path(filename, "sftp", context, &session, &rsrc, &sftp, &sftp_rsrc);
- if (!resource || !session || !sftp) {
- return NULL;
- }
-@@ -242,20 +240,18 @@ static php_stream *php_ssh2_sftp_stream_opener(php_stream_wrapper *wrapper, cons
- if (!handle) {
- php_error_docref(NULL, E_WARNING, "Unable to open %s on remote host", filename);
- php_url_free(resource);
-- //TODO Sean-Der
-- //zend_list_delete(sftp_rsrcid);
-+ zend_list_delete(sftp_rsrc);
- return NULL;
- }
-
- data = emalloc(sizeof(php_ssh2_sftp_handle_data));
- data->handle = handle;
-- data->sftp_rsrcid = sftp_rsrcid;
-+ data->sftp_rsrc = sftp_rsrc;
-
- stream = php_stream_alloc(&php_ssh2_sftp_stream_ops, data, 0, mode);
- if (!stream) {
- libssh2_sftp_close(handle);
-- // TODO Sean-Der
-- //zend_list_delete(sftp_rsrcid);
-+ zend_list_delete(sftp_rsrc);
- efree(data);
- }
- php_url_free(resource);
-@@ -303,8 +299,7 @@ static int php_ssh2_sftp_dirstream_close(php_stream *stream, int close_handle)
- php_ssh2_sftp_handle_data *data = (php_ssh2_sftp_handle_data*)stream->abstract;
-
- libssh2_sftp_close(data->handle);
-- //TODO Sean_der
-- //zend_list_delete(data->sftp_rsrcid);
-+ zend_list_delete(data->sftp_rsrc);
- efree(data);
-
- return 0;
-@@ -333,10 +328,10 @@ static php_stream *php_ssh2_sftp_dirstream_opener(php_stream_wrapper *wrapper, c
- LIBSSH2_SFTP *sftp = NULL;
- LIBSSH2_SFTP_HANDLE *handle;
- php_stream *stream;
-- int resource_id = 0, sftp_rsrcid = 0;
-+ zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
- php_url *resource;
-
-- resource = php_ssh2_fopen_wraper_parse_path(filename, "sftp", context, &session, &resource_id, &sftp, &sftp_rsrcid);
-+ resource = php_ssh2_fopen_wraper_parse_path(filename, "sftp", context, &session, &rsrc, &sftp, &sftp_rsrc);
- if (!resource || !session || !sftp) {
- return NULL;
- }
-@@ -345,20 +340,18 @@ static php_stream *php_ssh2_sftp_dirstream_opener(php_stream_wrapper *wrapper, c
- if (!handle) {
- php_error_docref(NULL, E_WARNING, "Unable to open %s on remote host", filename);
- php_url_free(resource);
-- //TODO Sean-Der
-- //zend_list_delete(sftp_rsrcid);
-+ zend_list_delete(sftp_rsrc);
- return NULL;
- }
-
- data = emalloc(sizeof(php_ssh2_sftp_handle_data));
- data->handle = handle;
-- data->sftp_rsrcid = sftp_rsrcid;
-+ data->sftp_rsrc = sftp_rsrc;
-
- stream = php_stream_alloc(&php_ssh2_sftp_dirstream_ops, data, 0, mode);
- if (!stream) {
- libssh2_sftp_close(handle);
-- //TODO Sean-Der
-- //zend_list_delete(sftp_rsrcid);
-+ zend_list_delete(sftp_rsrc);
- efree(data);
- }
- php_url_free(resource);
-@@ -378,10 +371,10 @@ static int php_ssh2_sftp_urlstat(php_stream_wrapper *wrapper, const char *url, i
- LIBSSH2_SFTP_ATTRIBUTES attrs;
- LIBSSH2_SESSION *session = NULL;
- LIBSSH2_SFTP *sftp = NULL;
-- int resource_id = 0, sftp_rsrcid = 0;
-+ zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
- php_url *resource;
-
-- resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, &session, &resource_id, &sftp, &sftp_rsrcid);
-+ resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, &session, &rsrc, &sftp, &sftp_rsrc);
- if (!resource || !session || !sftp || !resource->path) {
- return -1;
- }
-@@ -408,11 +401,11 @@ static int php_ssh2_sftp_unlink(php_stream_wrapper *wrapper, const char *url, in
- {
- LIBSSH2_SESSION *session = NULL;
- LIBSSH2_SFTP *sftp = NULL;
-- int resource_id = 0, sftp_rsrcid = 0;
-+ zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
- php_url *resource;
- int result;
-
-- resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, &session, &resource_id, &sftp, &sftp_rsrcid);
-+ resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, &session, &rsrc, &sftp, &sftp_rsrc);
- if (!resource || !session || !sftp || !resource->path) {
- if (resource) {
- php_url_free(resource);
-@@ -436,7 +429,7 @@ static int php_ssh2_sftp_rename(php_stream_wrapper *wrapper, const char *url_fro
- {
- LIBSSH2_SESSION *session = NULL;
- LIBSSH2_SFTP *sftp = NULL;
-- int resource_id = 0, sftp_rsrcid = 0;
-+ zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
- php_url *resource, *resource_to;
- int result;
-
-@@ -453,7 +446,7 @@ static int php_ssh2_sftp_rename(php_stream_wrapper *wrapper, const char *url_fro
- return 0;
- }
-
-- resource = php_ssh2_fopen_wraper_parse_path(url_from, "sftp", context, &session, &resource_id, &sftp, &sftp_rsrcid);
-+ resource = php_ssh2_fopen_wraper_parse_path(url_from, "sftp", context, &session, &rsrc, &sftp, &sftp_rsrc);
- if (!resource || !session || !sftp || !resource->path) {
- if (resource) {
- php_url_free(resource);
-@@ -479,11 +472,11 @@ static int php_ssh2_sftp_mkdir(php_stream_wrapper *wrapper, const char *url, int
- {
- LIBSSH2_SESSION *session = NULL;
- LIBSSH2_SFTP *sftp = NULL;
-- int resource_id = 0, sftp_rsrcid = 0;
-+ zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
- php_url *resource;
- int result;
-
-- resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, &session, &resource_id, &sftp, &sftp_rsrcid);
-+ resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, &session, &rsrc, &sftp, &sftp_rsrc);
- if (!resource || !session || !sftp || !resource->path) {
- if (resource) {
- php_url_free(resource);
-@@ -515,11 +508,11 @@ static int php_ssh2_sftp_rmdir(php_stream_wrapper *wrapper, const char *url, int
- {
- LIBSSH2_SESSION *session = NULL;
- LIBSSH2_SFTP *sftp = NULL;
-- int resource_id = 0, sftp_rsrcid = 0;
-+ zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
- php_url *resource;
- int result;
-
-- resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, &session, &resource_id, &sftp, &sftp_rsrcid);
-+ resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, &session, &rsrc, &sftp, &sftp_rsrc);
- if (!resource || !session || !sftp || !resource->path) {
- if (resource) {
- php_url_free(resource);
-@@ -591,7 +584,7 @@ PHP_FUNCTION(ssh2_sftp)
- data = emalloc(sizeof(php_ssh2_sftp_data));
- data->session = session;
- data->sftp = sftp;
-- data->session_rsrcid = Z_RES_P(zsession)->handle;
-+ data->session_rsrc = Z_RES_P(zsession);
- Z_ADDREF_P(zsession);
-
- RETURN_RES(zend_register_resource(data, le_ssh2_sftp));
diff --git a/package/php-ssh2/php-ssh2.hash b/package/php-ssh2/php-ssh2.hash
index 36e04f471f..3fbb0b24c8 100644
--- a/package/php-ssh2/php-ssh2.hash
+++ b/package/php-ssh2/php-ssh2.hash
@@ -1,3 +1,3 @@
# Locally calculated
-sha256 87618d6a0981afe8c24b36d6b38c21a0aa0237b62e60347d0170bd86b51f79fb ssh2-1.1.2.tgz
+sha256 9093a1f8d24dc65836027b0e239c50de8d5eaebf8396bc3331fdd38c5d69afd9 ssh2-1.3.1.tgz
sha256 ac7c56f1e416ce6e60abcf26269395128bc9e5a2e4f3293e5dcc124aac606508 LICENSE
diff --git a/package/php-ssh2/php-ssh2.mk b/package/php-ssh2/php-ssh2.mk
index c9c13010dd..b79ac04179 100644
--- a/package/php-ssh2/php-ssh2.mk
+++ b/package/php-ssh2/php-ssh2.mk
@@ -4,7 +4,7 @@
#
################################################################################
-PHP_SSH2_VERSION = 1.1.2
+PHP_SSH2_VERSION = 1.3.1
PHP_SSH2_SOURCE = ssh2-$(PHP_SSH2_VERSION).tgz
PHP_SSH2_SITE = https://pecl.php.net/get
PHP_SSH2_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* [Buildroot] [PATCH 10/11] package/php-amqp: add add upstream php8 compatibility patches
2021-06-29 16:50 [Buildroot] [PATCH 01/11] package/php-amqp: bump version to 1.10.2 Adam Duskett
` (7 preceding siblings ...)
2021-06-29 16:50 ` [Buildroot] [PATCH 09/11] package/php-geoip: add php8 build support Adam Duskett
@ 2021-06-29 16:50 ` Adam Duskett
2021-06-29 16:50 ` [Buildroot] [PATCH 11/11] package/php: bump version to 8.0.7 Adam Duskett
2021-07-03 20:03 ` [Buildroot] [PATCH 01/11] package/php-amqp: bump version to 1.10.2 Thomas Petazzoni
10 siblings, 0 replies; 12+ messages in thread
From: Adam Duskett @ 2021-06-29 16:50 UTC (permalink / raw)
To: buildroot
These patches are necessary for compiling against php8. These patches also
retain the ability to compile against PHP7.2
Signed-off-by: Adam Duskett <aduskett@gmail.com>
---
.../0001-add-build-support-for-php-8.patch | 54 +
.../php-amqp/0002-more-work-for-php-8.patch | 1265 +++++++++++++++++
2 files changed, 1319 insertions(+)
create mode 100644 package/php-amqp/0001-add-build-support-for-php-8.patch
create mode 100644 package/php-amqp/0002-more-work-for-php-8.patch
diff --git a/package/php-amqp/0001-add-build-support-for-php-8.patch b/package/php-amqp/0001-add-build-support-for-php-8.patch
new file mode 100644
index 0000000000..6fe09ad3bd
--- /dev/null
+++ b/package/php-amqp/0001-add-build-support-for-php-8.patch
@@ -0,0 +1,54 @@
+From 96cd5cb5eddd3db2faaa3643dad2fe4677d7c438 Mon Sep 17 00:00:00 2001
+From: mmokhi <mokhi64@gmail.com>
+Date: Thu, 30 Jul 2020 11:25:33 +0200
+Subject: [PATCH] Add build support for PHP8.0 (#381)
+
+From upstream commit: 96cd5cb5eddd3db2faaa3643dad2fe4677d7c438
+
+Signed-off-by: mmokhi <mokhi64@gmail.com>
+Signed-off-by: Adam Duskett <aduskett@gmail.com>
+---
+ amqp_envelope.h | 7 +++++++
+ php7_support.h | 11 +++++++++++
+ 2 files changed, 18 insertions(+)
+
+diff --git a/amqp_envelope.h b/amqp_envelope.h
+index e63a3a5..e315682 100644
+--- a/amqp_envelope.h
++++ b/amqp_envelope.h
+@@ -20,6 +20,13 @@
+ | - Jonathan Tansavatdi |
+ +----------------------------------------------------------------------+
+ */
++
++#if PHP_MAJOR_VERSION >= 7
++ #include "php7_support.h"
++#else
++ #include "php5_support.h"
++#endif
++
+ extern zend_class_entry *amqp_envelope_class_entry;
+
+ void convert_amqp_envelope_to_zval(amqp_envelope_t *amqp_envelope, zval *envelope TSRMLS_DC);
+diff --git a/php7_support.h b/php7_support.h
+index 47ce983..c9e8f5b 100644
+--- a/php7_support.h
++++ b/php7_support.h
+@@ -101,6 +101,17 @@ typedef zval PHP5to7_zend_resource_le_t;
+
+ #define PHP5to7_ZEND_ACC_FINAL_CLASS ZEND_ACC_FINAL
+
++/* Small change to let it build after a major internal change for php8.0
++ * More info:
++ * https://github.com/php/php-src/blob/php-8.0.0alpha3/UPGRADING.INTERNALS#L47
++ */
++#if PHP_MAJOR_VERSION >= 8
++# define TSRMLS_DC
++# define TSRMLS_D
++# define TSRMLS_CC
++# define TSRMLS_C
++# endif
++
+ #endif //PHP_AMQP_PHP7_SUPPORT_H
+
+ /*
diff --git a/package/php-amqp/0002-more-work-for-php-8.patch b/package/php-amqp/0002-more-work-for-php-8.patch
new file mode 100644
index 0000000000..3651f5a0d3
--- /dev/null
+++ b/package/php-amqp/0002-more-work-for-php-8.patch
@@ -0,0 +1,1265 @@
+From df1241852b359cf12c346beaa68de202257efdf1 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Wed, 9 Dec 2020 17:00:46 +0100
+Subject: [PATCH] more work for PHP 8 (#383)
+
+* more work for PHP 8
+
+* split test
+
+Signed-off-by: Remi Collet <remi@remirepo.net>
+Signed-off-by: Adam Duskett <aduskett@gmail.com>
+---
+ amqp_basic_properties.c | 84 +++++++++++++--------------
+ amqp_channel.c | 49 +++++++++-------
+ amqp_connection.c | 106 +++++++++++++++++-----------------
+ amqp_connection_resource.c | 12 ++--
+ amqp_decimal.c | 8 +--
+ amqp_envelope.c | 12 ++--
+ amqp_exchange.c | 22 +++----
+ amqp_queue.c | 38 ++++++------
+ amqp_timestamp.c | 6 +-
+ amqp_type.c | 6 +-
+ php5_support.h | 2 +
+ php7_support.h | 9 +++
+ php_amqp.h | 8 +--
+ tests/amqptimestamp.phpt | 4 +-
+ tests/amqptimestamp_php8.phpt | 60 +++++++++++++++++++
+ tests/bug_61533.phpt | 2 +-
+ 16 files changed, 254 insertions(+), 174 deletions(-)
+ create mode 100644 tests/amqptimestamp_php8.phpt
+
+diff --git a/amqp_basic_properties.c b/amqp_basic_properties.c
+index 69b813e..5375f44 100644
+--- a/amqp_basic_properties.c
++++ b/amqp_basic_properties.c
+@@ -70,7 +70,7 @@ void php_amqp_basic_properties_set_empty_headers(zval *obj TSRMLS_DC) {
+ PHP5to7_MAYBE_INIT(headers);
+ PHP5to7_ARRAY_INIT(headers);
+
+- zend_update_property(this_ce, obj, ZEND_STRL("headers"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("headers"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);
+
+ PHP5to7_MAYBE_DESTROY(headers);
+ }
+@@ -118,29 +118,29 @@ static PHP_METHOD(AMQPBasicProperties, __construct) {
+ ) == FAILURE) {
+ return;
+ }
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("content_type"), content_type, content_type_len TSRMLS_CC);
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("content_encoding"), content_encoding, content_encoding_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("content_type"), content_type, content_type_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("content_encoding"), content_encoding, content_encoding_len TSRMLS_CC);
+
+ if (headers != NULL) {
+- zend_update_property(this_ce, getThis(), ZEND_STRL("headers"), headers TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("headers"), headers TSRMLS_CC);
+ } else {
+ php_amqp_basic_properties_set_empty_headers(getThis() TSRMLS_CC);
+ }
+
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("delivery_mode"), delivery_mode TSRMLS_CC);
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("priority"), priority TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("delivery_mode"), delivery_mode TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("priority"), priority TSRMLS_CC);
+
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("correlation_id"), correlation_id, correlation_id_len TSRMLS_CC);
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("reply_to"), reply_to, reply_to_len TSRMLS_CC);
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("expiration"), expiration, expiration_len TSRMLS_CC);
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("message_id"), message_id, message_id_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("correlation_id"), correlation_id, correlation_id_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("reply_to"), reply_to, reply_to_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("expiration"), expiration, expiration_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("message_id"), message_id, message_id_len TSRMLS_CC);
+
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("timestamp"), timestamp TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("timestamp"), timestamp TSRMLS_CC);
+
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("type"), type, type_len TSRMLS_CC);
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("user_id"), user_id, user_id_len TSRMLS_CC);
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("app_id"), app_id, app_id_len TSRMLS_CC);
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("cluster_id"), cluster_id, cluster_id_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("type"), type, type_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("user_id"), user_id, user_id_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("app_id"), app_id, app_id_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("cluster_id"), cluster_id, cluster_id_len TSRMLS_CC);
+ }
+ /* }}} */
+
+@@ -460,7 +460,7 @@ void parse_amqp_table(amqp_table_t *table, zval *result TSRMLS_DC) {
+ object_init_ex(PHP5to7_MAYBE_PTR(value), amqp_timestamp_class_entry);
+
+ zend_call_method_with_1_params(
+- &value,
++ PHP5to8_OBJ_PROP(&value),
+ amqp_timestamp_class_entry,
+ NULL,
+ "__construct",
+@@ -488,7 +488,7 @@ void parse_amqp_table(amqp_table_t *table, zval *result TSRMLS_DC) {
+ object_init_ex(PHP5to7_MAYBE_PTR(value), amqp_decimal_class_entry);
+
+ zend_call_method_with_2_params(
+- &value,
++ PHP5to8_OBJ_PROP(&value),
+ amqp_decimal_class_entry,
+ NULL,
+ "__construct",
+@@ -525,93 +525,93 @@ void php_amqp_basic_properties_extract(amqp_basic_properties_t *p, zval *obj TSR
+ PHP5to7_ARRAY_INIT(headers);
+
+ if (p->_flags & AMQP_BASIC_CONTENT_TYPE_FLAG) {
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("content_type"), (const char *) p->content_type.bytes, (PHP5to7_param_str_len_type_t) p->content_type.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("content_type"), (const char *) p->content_type.bytes, (PHP5to7_param_str_len_type_t) p->content_type.len TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("content_type"), "", 0 TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("content_type"), "", 0 TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_CONTENT_ENCODING_FLAG) {
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("content_encoding"), (const char *) p->content_encoding.bytes, (PHP5to7_param_str_len_type_t) p->content_encoding.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("content_encoding"), (const char *) p->content_encoding.bytes, (PHP5to7_param_str_len_type_t) p->content_encoding.len TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("content_encoding"), "", 0 TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("content_encoding"), "", 0 TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_HEADERS_FLAG) {
+ parse_amqp_table(&(p->headers), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);
+ }
+
+- zend_update_property(this_ce, obj, ZEND_STRL("headers"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("headers"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);
+
+ if (p->_flags & AMQP_BASIC_DELIVERY_MODE_FLAG) {
+- zend_update_property_long(this_ce, obj, ZEND_STRL("delivery_mode"), (PHP5to7_param_long_type_t) p->delivery_mode TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("delivery_mode"), (PHP5to7_param_long_type_t) p->delivery_mode TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_long(this_ce, obj, ZEND_STRL("delivery_mode"), AMQP_DELIVERY_NONPERSISTENT TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("delivery_mode"), AMQP_DELIVERY_NONPERSISTENT TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_PRIORITY_FLAG) {
+- zend_update_property_long(this_ce, obj, ZEND_STRL("priority"), (PHP5to7_param_long_type_t) p->priority TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("priority"), (PHP5to7_param_long_type_t) p->priority TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_long(this_ce, obj, ZEND_STRL("priority"), 0 TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("priority"), 0 TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_CORRELATION_ID_FLAG) {
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("correlation_id"), (const char *) p->correlation_id.bytes, (PHP5to7_param_str_len_type_t) p->correlation_id.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("correlation_id"), (const char *) p->correlation_id.bytes, (PHP5to7_param_str_len_type_t) p->correlation_id.len TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("correlation_id"), "", 0 TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("correlation_id"), "", 0 TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_REPLY_TO_FLAG) {
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("reply_to"), (const char *) p->reply_to.bytes, (PHP5to7_param_str_len_type_t) p->reply_to.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("reply_to"), (const char *) p->reply_to.bytes, (PHP5to7_param_str_len_type_t) p->reply_to.len TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("reply_to"), "", 0 TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("reply_to"), "", 0 TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_EXPIRATION_FLAG) {
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("expiration"), (const char *) p->expiration.bytes, (PHP5to7_param_str_len_type_t) p->expiration.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("expiration"), (const char *) p->expiration.bytes, (PHP5to7_param_str_len_type_t) p->expiration.len TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("expiration"), "", 0 TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("expiration"), "", 0 TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_MESSAGE_ID_FLAG) {
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("message_id"), (const char *) p->message_id.bytes, (PHP5to7_param_str_len_type_t) p->message_id.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("message_id"), (const char *) p->message_id.bytes, (PHP5to7_param_str_len_type_t) p->message_id.len TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("message_id"), "", 0 TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("message_id"), "", 0 TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_TIMESTAMP_FLAG) {
+- zend_update_property_long(this_ce, obj, ZEND_STRL("timestamp"), (PHP5to7_param_long_type_t) p->timestamp TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("timestamp"), (PHP5to7_param_long_type_t) p->timestamp TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_long(this_ce, obj, ZEND_STRL("timestamp"), 0 TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("timestamp"), 0 TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_TYPE_FLAG) {
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("type"), (const char *) p->type.bytes, (PHP5to7_param_str_len_type_t) p->type.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("type"), (const char *) p->type.bytes, (PHP5to7_param_str_len_type_t) p->type.len TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("type"), "", 0 TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("type"), "", 0 TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_USER_ID_FLAG) {
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("user_id"), (const char *) p->user_id.bytes, (PHP5to7_param_str_len_type_t) p->user_id.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("user_id"), (const char *) p->user_id.bytes, (PHP5to7_param_str_len_type_t) p->user_id.len TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("user_id"), "", 0 TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("user_id"), "", 0 TSRMLS_CC);
+ }
+
+ if (p->_flags & AMQP_BASIC_APP_ID_FLAG) {
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("app_id"), (const char *) p->app_id.bytes, (PHP5to7_param_str_len_type_t) p->app_id.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("app_id"), (const char *) p->app_id.bytes, (PHP5to7_param_str_len_type_t) p->app_id.len TSRMLS_CC);
+ } else {
+ /* BC */
+- zend_update_property_stringl(this_ce, obj, ZEND_STRL("app_id"), "", 0 TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL("app_id"), "", 0 TSRMLS_CC);
+ }
+
+ PHP5to7_MAYBE_DESTROY(headers);
+diff --git a/amqp_channel.c b/amqp_channel.c
+index ef9552a..493c6d3 100644
+--- a/amqp_channel.c
++++ b/amqp_channel.c
+@@ -152,10 +152,15 @@ static zval * php_amqp_get_fci_gc_data(zend_fcall_info *fci, zval *gc_data) {
+ return gc_data;
+ }
+
++#if PHP_MAJOR_VERSION < 8
+ static HashTable *amqp_channel_gc(zval *object, zval **table, int *n) /* {{{ */
+ {
+- amqp_channel_object *channel = PHP_AMQP_GET_CHANNEL(object);
+-
++ amqp_channel_object *channel = PHP_AMQP_GET_CHANNEL(object);
++#else
++static HashTable *amqp_channel_gc(zend_object *object, zval **table, int *n) /* {{{ */
++{
++ amqp_channel_object *channel = php_amqp_channel_object_fetch(object);
++#endif
+ int basic_return_cnt = php_amqp_get_fci_gc_data_count(&channel->callbacks.basic_return.fci);
+ int basic_ack_cnt = php_amqp_get_fci_gc_data_count(&channel->callbacks.basic_ack.fci);
+ int basic_nack_cnt = php_amqp_get_fci_gc_data_count(&channel->callbacks.basic_nack.fci);
+@@ -249,7 +254,7 @@ static HashTable *amqp_channel_gc(zval *object, zval ***table, int *n TSRMLS_DC)
+ *table = channel->gc_data;
+ *n = cnt;
+
+- return zend_std_get_properties(object TSRMLS_CC);
++ return zend_std_get_properties(PHP5to8_OBJ_PROP(object) TSRMLS_CC);
+ } /* }}} */
+
+ #endif
+@@ -331,7 +336,7 @@ static PHP_METHOD(amqp_channel_class, __construct)
+ amqp_connection_object *connection;
+
+ /* Parse out the method parameters */
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &connection_object) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &connection_object, amqp_connection_class_entry) == FAILURE) {
+ zend_throw_exception(amqp_channel_exception_class_entry, "Parameter must be an instance of AMQPConnection.", 0 TSRMLS_CC);
+ RETURN_NULL();
+ }
+@@ -341,7 +346,7 @@ static PHP_METHOD(amqp_channel_class, __construct)
+ PHP5to7_MAYBE_INIT(consumers);
+ PHP5to7_ARRAY_INIT(consumers);
+
+- zend_update_property(this_ce, getThis(), ZEND_STRL("consumers"), PHP5to7_MAYBE_PTR(consumers) TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("consumers"), PHP5to7_MAYBE_PTR(consumers) TSRMLS_CC);
+
+ PHP5to7_MAYBE_DESTROY(consumers);
+
+@@ -351,16 +356,16 @@ static PHP_METHOD(amqp_channel_class, __construct)
+ #endif
+
+ /* Set the prefetch count */
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_count"), INI_INT("amqp.prefetch_count") TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_count"), INI_INT("amqp.prefetch_count") TSRMLS_CC);
+
+ /* Set the prefetch size */
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_size"), INI_INT("amqp.prefetch_size") TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_size"), INI_INT("amqp.prefetch_size") TSRMLS_CC);
+
+ /* Set the global prefetch count */
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_count"), INI_INT("amqp.global_prefetch_count") TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_count"), INI_INT("amqp.global_prefetch_count") TSRMLS_CC);
+
+ /* Set the global prefetch size */
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_size"), INI_INT("amqp.global_prefetch_size") TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_size"), INI_INT("amqp.global_prefetch_size") TSRMLS_CC);
+
+ /* Pull out and verify the connection */
+ connection = PHP_AMQP_GET_CONNECTION(connection_object);
+@@ -376,7 +381,7 @@ static PHP_METHOD(amqp_channel_class, __construct)
+ return;
+ }
+
+- zend_update_property(this_ce, getThis(), ZEND_STRL("connection"), connection_object TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection"), connection_object TSRMLS_CC);
+
+ channel_resource = (amqp_channel_resource*)ecalloc(1, sizeof(amqp_channel_resource));
+ channel->channel_resource = channel_resource;
+@@ -580,8 +585,8 @@ static PHP_METHOD(amqp_channel_class, setPrefetchCount)
+ }
+
+ /* Set the prefetch count - the implication is to disable the size */
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_count"), prefetch_count TSRMLS_CC);
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_size"), 0 TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_count"), prefetch_count TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_size"), 0 TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -659,8 +664,8 @@ static PHP_METHOD(amqp_channel_class, setPrefetchSize)
+ }
+
+ /* Set the prefetch size - the implication is to disable the count */
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_count"), 0 TSRMLS_CC);
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_size"), prefetch_size TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_count"), 0 TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_size"), prefetch_size TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -715,8 +720,8 @@ static PHP_METHOD(amqp_channel_class, setGlobalPrefetchCount)
+ }
+
+ /* Set the global prefetch count - the implication is to disable the size */
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_count"), global_prefetch_count TSRMLS_CC);
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_size"), 0 TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_count"), global_prefetch_count TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_size"), 0 TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -771,8 +776,8 @@ static PHP_METHOD(amqp_channel_class, setGlobalPrefetchSize)
+ }
+
+ /* Set the global prefetch size - the implication is to disable the count */
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_count"), 0 TSRMLS_CC);
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_size"), global_prefetch_size TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_count"), 0 TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_size"), global_prefetch_size TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -808,11 +813,11 @@ static PHP_METHOD(amqp_channel_class, qos)
+
+ /* Set the prefetch size and prefetch count */
+ if (global) {
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_size"), prefetch_size TSRMLS_CC);
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("global_prefetch_count"), prefetch_count TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_size"), prefetch_size TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("global_prefetch_count"), prefetch_count TSRMLS_CC);
+ } else {
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_size"), prefetch_size TSRMLS_CC);
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("prefetch_count"), prefetch_count TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_size"), prefetch_size TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("prefetch_count"), prefetch_count TSRMLS_CC);
+ }
+
+ /* If we are already connected, set the new prefetch count */
+diff --git a/amqp_connection.c b/amqp_connection.c
+index 5891a4f..466501a 100644
+--- a/amqp_connection.c
++++ b/amqp_connection.c
+@@ -68,9 +68,9 @@ zend_object_handlers amqp_connection_object_handlers;
+ convert_to_string(PHP5to7_MAYBE_DEREF(zdata)); \
+ } \
+ if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) { \
+- zend_update_property_string(this_ce, getThis(), ZEND_STRL(name), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \
++ zend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \
+ } else { \
+- zend_update_property_string(this_ce, getThis(), ZEND_STRL(name), INI_STR("amqp." name) TSRMLS_CC); \
++ zend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), INI_STR("amqp." name) TSRMLS_CC); \
+ }
+
+ #define PHP_AMQP_EXTRACT_CONNECTION_BOOL(name) \
+@@ -80,9 +80,9 @@ zend_object_handlers amqp_connection_object_handlers;
+ convert_to_long(PHP5to7_MAYBE_DEREF(zdata)); \
+ } \
+ if (zdata) { \
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL(name), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \
+ } else { \
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL(name), INI_INT("amqp." name) TSRMLS_CC); \
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), INI_INT("amqp." name) TSRMLS_CC); \
+ }
+
+ static int php_amqp_connection_resource_deleter(PHP5to7_zend_resource_le_t *el, amqp_connection_resource *connection_resource TSRMLS_DC)
+@@ -344,13 +344,13 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ /* Validate the given login */
+ if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
+ if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
+- zend_update_property(this_ce, getThis(), ZEND_STRL("login"), PHP5to7_MAYBE_DEREF(zdata)TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("login"), PHP5to7_MAYBE_DEREF(zdata)TSRMLS_CC);
+ } else {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'login' exceeds 128 character limit.", 0 TSRMLS_CC);
+ return;
+ }
+ } else {
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("login"), INI_STR("amqp.login"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.login")) > 128 ? 128 : strlen(INI_STR("amqp.login"))) TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("login"), INI_STR("amqp.login"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.login")) > 128 ? 128 : strlen(INI_STR("amqp.login"))) TSRMLS_CC);
+ }
+
+ /* Pull the password out of the $params array */
+@@ -362,13 +362,13 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ /* Validate the given password */
+ if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
+ if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("password"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("password"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ } else {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'password' exceeds 128 character limit.", 0 TSRMLS_CC);
+ return;
+ }
+ } else {
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("password"), INI_STR("amqp.password"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.password")) > 128 ? 128 : strlen(INI_STR("amqp.password"))) TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("password"), INI_STR("amqp.password"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.password")) > 128 ? 128 : strlen(INI_STR("amqp.password"))) TSRMLS_CC);
+ }
+
+ /* Pull the host out of the $params array */
+@@ -380,13 +380,13 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ /* Validate the given host */
+ if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
+ if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("host"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("host"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ } else {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'host' exceeds 128 character limit.", 0 TSRMLS_CC);
+ return;
+ }
+ } else {
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("host"), INI_STR("amqp.host"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.host")) > 128 ? 128 : strlen(INI_STR("amqp.host"))) TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("host"), INI_STR("amqp.host"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.host")) > 128 ? 128 : strlen(INI_STR("amqp.host"))) TSRMLS_CC);
+ }
+
+ /* Pull the vhost out of the $params array */
+@@ -398,25 +398,25 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ /* Validate the given vhost */
+ if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
+ if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("vhost"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("vhost"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ } else {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'vhost' exceeds 128 character limit.", 0 TSRMLS_CC);
+ return;
+ }
+ } else {
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("vhost"), INI_STR("amqp.vhost"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.vhost")) > 128 ? 128 : strlen(INI_STR("amqp.vhost"))) TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("vhost"), INI_STR("amqp.vhost"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.vhost")) > 128 ? 128 : strlen(INI_STR("amqp.vhost"))) TSRMLS_CC);
+
+ }
+
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("port"), INI_INT("amqp.port") TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("port"), INI_INT("amqp.port") TSRMLS_CC);
+
+ if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "port", sizeof("port"), zdata)) {
+ SEPARATE_ZVAL(zdata);
+ convert_to_long(PHP5to7_MAYBE_DEREF(zdata));
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("port"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("port"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ }
+
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
+
+ if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "read_timeout", sizeof("read_timeout"), zdata)) {
+ SEPARATE_ZVAL(zdata);
+@@ -424,7 +424,7 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'read_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
+ } else {
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ }
+
+ if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "timeout", sizeof("timeout"), zdata)) {
+@@ -441,7 +441,7 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
+ } else {
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ }
+ } else {
+
+@@ -450,17 +450,17 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "INI setting 'amqp.timeout' is deprecated; use 'amqp.read_timeout' instead");
+
+ if (strcmp(DEFAULT_READ_TIMEOUT, INI_STR("amqp.read_timeout")) == 0) {
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.timeout") TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), INI_FLT("amqp.timeout") TSRMLS_CC);
+ } else {
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "INI setting 'amqp.read_timeout' will be used instead of 'amqp.timeout'");
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
+ }
+ } else {
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
+ }
+ }
+
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("write_timeout"), INI_FLT("amqp.write_timeout") TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("write_timeout"), INI_FLT("amqp.write_timeout") TSRMLS_CC);
+
+ if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "write_timeout", sizeof("write_timeout"), zdata)) {
+ SEPARATE_ZVAL(zdata);
+@@ -468,11 +468,11 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'write_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
+ } else {
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("write_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("write_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ }
+ }
+
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("rpc_timeout"), INI_FLT("amqp.rpc_timeout") TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("rpc_timeout"), INI_FLT("amqp.rpc_timeout") TSRMLS_CC);
+
+ if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "rpc_timeout", sizeof("rpc_timeout"), zdata)) {
+ SEPARATE_ZVAL(zdata);
+@@ -480,11 +480,11 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'rpc_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
+ } else {
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("rpc_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("rpc_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ }
+ }
+
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("connect_timeout"), INI_FLT("amqp.connect_timeout") TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connect_timeout"), INI_FLT("amqp.connect_timeout") TSRMLS_CC);
+
+ if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "connect_timeout", sizeof("connect_timeout"), zdata)) {
+ SEPARATE_ZVAL(zdata);
+@@ -492,12 +492,12 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'connect_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
+ } else {
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("connect_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connect_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+
+ }
+ }
+
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("channel_max"), INI_INT("amqp.channel_max") TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("channel_max"), INI_INT("amqp.channel_max") TSRMLS_CC);
+
+ if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "channel_max", sizeof("channel_max"), zdata)) {
+ SEPARATE_ZVAL(zdata);
+@@ -506,14 +506,14 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'channel_max' is out of range.", 0 TSRMLS_CC);
+ } else {
+ if(Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) == 0) {
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("channel_max"), PHP_AMQP_DEFAULT_CHANNEL_MAX TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("channel_max"), PHP_AMQP_DEFAULT_CHANNEL_MAX TSRMLS_CC);
+ } else {
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("channel_max"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("channel_max"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ }
+ }
+ }
+
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("frame_max"), INI_INT("amqp.frame_max") TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("frame_max"), INI_INT("amqp.frame_max") TSRMLS_CC);
+
+ if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "frame_max", sizeof("frame_max"), zdata)) {
+ SEPARATE_ZVAL(zdata);
+@@ -522,14 +522,14 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'frame_max' is out of range.", 0 TSRMLS_CC);
+ } else {
+ if(Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) == 0) {
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("frame_max"), PHP_AMQP_DEFAULT_FRAME_MAX TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("frame_max"), PHP_AMQP_DEFAULT_FRAME_MAX TSRMLS_CC);
+ } else {
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("frame_max"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("frame_max"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ }
+ }
+ }
+
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("heartbeat"), INI_INT("amqp.heartbeat") TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("heartbeat"), INI_INT("amqp.heartbeat") TSRMLS_CC);
+
+ if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "heartbeat", sizeof("heartbeat"), zdata)) {
+ SEPARATE_ZVAL(zdata);
+@@ -537,16 +537,16 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ if (Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0 || Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) > PHP_AMQP_MAX_HEARTBEAT) {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'heartbeat' is out of range.", 0 TSRMLS_CC);
+ } else {
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("heartbeat"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("heartbeat"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ }
+ }
+
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("sasl_method"), INI_INT("amqp.sasl_method") TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("sasl_method"), INI_INT("amqp.sasl_method") TSRMLS_CC);
+
+ if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "sasl_method", sizeof("sasl_method"), zdata)) {
+ SEPARATE_ZVAL(zdata);
+ convert_to_long(PHP5to7_MAYBE_DEREF(zdata));
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("sasl_method"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("sasl_method"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ }
+
+
+@@ -563,7 +563,7 @@ static PHP_METHOD(amqp_connection_class, __construct)
+ convert_to_string(PHP5to7_MAYBE_DEREF(zdata));
+ }
+ if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
+- zend_update_property_string(this_ce, getThis(), ZEND_STRL("connection_name"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
++ zend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection_name"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
+ }
+ }
+ /* }}} */
+@@ -789,7 +789,7 @@ static PHP_METHOD(amqp_connection_class, setLogin)
+ return;
+ }
+
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("login"), login, login_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("login"), login, login_len TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -823,7 +823,7 @@ static PHP_METHOD(amqp_connection_class, setPassword)
+ return;
+ }
+
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("password"), password, password_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("password"), password, password_len TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -858,7 +858,7 @@ static PHP_METHOD(amqp_connection_class, setHost)
+ return;
+ }
+
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("host"), host, host_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("host"), host, host_len TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -910,7 +910,7 @@ static PHP_METHOD(amqp_connection_class, setPort)
+ return;
+ }
+
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("port"), port TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("port"), port TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -943,7 +943,7 @@ static PHP_METHOD(amqp_connection_class, setVhost)
+ return;
+ }
+
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("vhost"), vhost, vhost_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("vhost"), vhost, vhost_len TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -986,7 +986,7 @@ static PHP_METHOD(amqp_connection_class, setTimeout)
+ /* Get the connection object out of the store */
+ connection = PHP_AMQP_GET_CONNECTION(getThis());
+
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), read_timeout TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), read_timeout TSRMLS_CC);
+
+ if (connection->connection_resource && connection->connection_resource->is_connected) {
+ if (php_amqp_set_resource_read_timeout(connection->connection_resource, read_timeout TSRMLS_CC) == 0) {
+@@ -1032,7 +1032,7 @@ static PHP_METHOD(amqp_connection_class, setReadTimeout)
+ /* Get the connection object out of the store */
+ connection = PHP_AMQP_GET_CONNECTION(getThis());
+
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), read_timeout TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("read_timeout"), read_timeout TSRMLS_CC);
+
+ if (connection->connection_resource && connection->connection_resource->is_connected) {
+ if (php_amqp_set_resource_read_timeout(connection->connection_resource, read_timeout TSRMLS_CC) == 0) {
+@@ -1078,7 +1078,7 @@ static PHP_METHOD(amqp_connection_class, setWriteTimeout)
+ /* Get the connection object out of the store */
+ connection = PHP_AMQP_GET_CONNECTION(getThis());
+
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("write_timeout"), write_timeout TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("write_timeout"), write_timeout TSRMLS_CC);
+
+ if (connection->connection_resource && connection->connection_resource->is_connected) {
+ if (php_amqp_set_resource_write_timeout(connection->connection_resource, write_timeout TSRMLS_CC) == 0) {
+@@ -1124,7 +1124,7 @@ static PHP_METHOD(amqp_connection_class, setRpcTimeout)
+ /* Get the connection object out of the store */
+ connection = PHP_AMQP_GET_CONNECTION(getThis());
+
+- zend_update_property_double(this_ce, getThis(), ZEND_STRL("rpc_timeout"), rpc_timeout TSRMLS_CC);
++ zend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("rpc_timeout"), rpc_timeout TSRMLS_CC);
+
+ if (connection->connection_resource && connection->connection_resource->is_connected) {
+ if (php_amqp_set_resource_rpc_timeout(connection->connection_resource, rpc_timeout TSRMLS_CC) == 0) {
+@@ -1255,7 +1255,7 @@ static PHP_METHOD(amqp_connection_class, setCACert)
+ return;
+ }
+
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("cacert"), str, str_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("cacert"), str, str_len TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -1279,7 +1279,7 @@ static PHP_METHOD(amqp_connection_class, setCert)
+ return;
+ }
+
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("cert"), str, str_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("cert"), str, str_len TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -1303,7 +1303,7 @@ static PHP_METHOD(amqp_connection_class, setKey)
+ return;
+ }
+
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("key"), str, str_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("key"), str, str_len TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -1328,7 +1328,7 @@ static PHP_METHOD(amqp_connection_class, setVerify)
+ return;
+ }
+
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL("verify"), verify TSRMLS_CC);
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("verify"), verify TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -1361,7 +1361,7 @@ static PHP_METHOD(amqp_connection_class, setSaslMethod)
+ return;
+ }
+
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("sasl_method"), method TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("sasl_method"), method TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -1385,9 +1385,9 @@ static PHP_METHOD(amqp_connection_class, setConnectionName)
+ return;
+ }
+ if (str == NULL) {
+- zend_update_property_null(this_ce, getThis(), ZEND_STRL("connection_name") TSRMLS_CC);
++ zend_update_property_null(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection_name") TSRMLS_CC);
+ } else {
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("connection_name"), str, str_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection_name"), str, str_len TSRMLS_CC);
+ }
+
+
+diff --git a/amqp_connection_resource.c b/amqp_connection_resource.c
+index 7e20a5c..b0e065a 100644
+--- a/amqp_connection_resource.c
++++ b/amqp_connection_resource.c
+@@ -112,15 +112,15 @@ static void php_amqp_close_connection_from_server(amqp_rpc_reply_t reply, char *
+
+ if (!reply.reply.id) {
+ PHP_AMQP_G(error_code) = -1;
+- spprintf(message, 0, "Server connection error: %d, message: %s",
+- PHP_AMQP_G(error_code),
++ spprintf(message, 0, "Server connection error: %ld, message: %s",
++ (long)PHP_AMQP_G(error_code),
+ "unexpected response"
+ );
+ } else {
+ PHP_AMQP_G(error_code) = m->reply_code;
+ spprintf(message, 0, "Server connection error: %d, message: %.*s",
+ m->reply_code,
+- (PHP5to7_param_str_len_type_t) m->reply_text.len,
++ (int) m->reply_text.len,
+ (char *) m->reply_text.bytes
+ );
+ }
+@@ -156,15 +156,15 @@ static void php_amqp_close_channel_from_server(amqp_rpc_reply_t reply, char **me
+
+ if (!reply.reply.id) {
+ PHP_AMQP_G(error_code) = -1;
+- spprintf(message, 0, "Server channel error: %d, message: %s",
+- PHP_AMQP_G(error_code),
++ spprintf(message, 0, "Server channel error: %ld, message: %s",
++ (long)PHP_AMQP_G(error_code),
+ "unexpected response"
+ );
+ } else {
+ PHP_AMQP_G(error_code) = m->reply_code;
+ spprintf(message, 0, "Server channel error: %d, message: %.*s",
+ m->reply_code,
+- (PHP5to7_param_str_len_type_t) m->reply_text.len,
++ (int) m->reply_text.len,
+ (char *)m->reply_text.bytes
+ );
+ }
+diff --git a/amqp_decimal.c b/amqp_decimal.c
+index 83c9f20..8fd92c1 100644
+--- a/amqp_decimal.c
++++ b/amqp_decimal.c
+@@ -53,7 +53,7 @@ static PHP_METHOD(amqp_decimal_class, __construct)
+ }
+
+ if (exponent > AMQP_DECIMAL_EXPONENT_MAX) {
+- zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal exponent value must be less than %u.", AMQP_DECIMAL_EXPONENT_MAX);
++ zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal exponent value must be less than %u.", (unsigned)AMQP_DECIMAL_EXPONENT_MAX);
+ return;
+ }
+ if (significand < AMQP_DECIMAL_SIGNIFICAND_MIN) {
+@@ -62,12 +62,12 @@ static PHP_METHOD(amqp_decimal_class, __construct)
+ }
+
+ if (significand > AMQP_DECIMAL_SIGNIFICAND_MAX) {
+- zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal significand value must be less than %u.", AMQP_DECIMAL_SIGNIFICAND_MAX);
++ zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal significand value must be less than %u.", (unsigned)AMQP_DECIMAL_SIGNIFICAND_MAX);
+ return;
+ }
+
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("exponent"), exponent TSRMLS_CC);
+- zend_update_property_long(this_ce, getThis(), ZEND_STRL("significand"), significand TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("exponent"), exponent TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("significand"), significand TSRMLS_CC);
+ }
+ /* }}} */
+
+diff --git a/amqp_envelope.c b/amqp_envelope.c
+index 8127bed..b7a7a45 100644
+--- a/amqp_envelope.c
++++ b/amqp_envelope.c
+@@ -67,13 +67,13 @@ void convert_amqp_envelope_to_zval(amqp_envelope_t *amqp_envelope, zval *envelop
+ amqp_basic_properties_t *p = &amqp_envelope->message.properties;
+ amqp_message_t *message = &amqp_envelope->message;
+
+- zend_update_property_stringl(this_ce, envelope, ZEND_STRL("body"), (const char *) message->body.bytes, (PHP5to7_param_str_len_type_t) message->body.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("body"), (const char *) message->body.bytes, (PHP5to7_param_str_len_type_t) message->body.len TSRMLS_CC);
+
+- zend_update_property_stringl(this_ce, envelope, ZEND_STRL("consumer_tag"), (const char *) amqp_envelope->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->consumer_tag.len TSRMLS_CC);
+- zend_update_property_long(this_ce, envelope, ZEND_STRL("delivery_tag"), (PHP5to7_param_long_type_t) amqp_envelope->delivery_tag TSRMLS_CC);
+- zend_update_property_bool(this_ce, envelope, ZEND_STRL("is_redelivery"), (PHP5to7_param_long_type_t) amqp_envelope->redelivered TSRMLS_CC);
+- zend_update_property_stringl(this_ce, envelope, ZEND_STRL("exchange_name"), (const char *) amqp_envelope->exchange.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->exchange.len TSRMLS_CC);
+- zend_update_property_stringl(this_ce, envelope, ZEND_STRL("routing_key"), (const char *) amqp_envelope->routing_key.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->routing_key.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("consumer_tag"), (const char *) amqp_envelope->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->consumer_tag.len TSRMLS_CC);
++ zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("delivery_tag"), (PHP5to7_param_long_type_t) amqp_envelope->delivery_tag TSRMLS_CC);
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("is_redelivery"), (PHP5to7_param_long_type_t) amqp_envelope->redelivered TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("exchange_name"), (const char *) amqp_envelope->exchange.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->exchange.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL("routing_key"), (const char *) amqp_envelope->routing_key.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->routing_key.len TSRMLS_CC);
+
+ php_amqp_basic_properties_extract(p, envelope TSRMLS_CC);
+ }
+diff --git a/amqp_exchange.c b/amqp_exchange.c
+index 4f80d3b..4bfe397 100644
+--- a/amqp_exchange.c
++++ b/amqp_exchange.c
+@@ -65,20 +65,20 @@ static PHP_METHOD(amqp_exchange_class, __construct)
+ zval *channelObj;
+ amqp_channel_resource *channel_resource;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &channelObj) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &channelObj, amqp_channel_class_entry) == FAILURE) {
+ return;
+ }
+
+ PHP5to7_MAYBE_INIT(arguments);
+ PHP5to7_ARRAY_INIT(arguments);
+- zend_update_property(this_ce, getThis(), ZEND_STRL("arguments"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("arguments"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);
+ PHP5to7_MAYBE_DESTROY(arguments);
+
+ channel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(channelObj);
+ PHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, "Could not create exchange.");
+
+- zend_update_property(this_ce, getThis(), ZEND_STRL("channel"), channelObj TSRMLS_CC);
+- zend_update_property(this_ce, getThis(), ZEND_STRL("connection"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, "connection") TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("channel"), channelObj TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, "connection") TSRMLS_CC);
+ }
+ /* }}} */
+
+@@ -119,7 +119,7 @@ static PHP_METHOD(amqp_exchange_class, setName)
+ }
+
+ /* Set the exchange name */
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("name"), name, name_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("name"), name, name_len TSRMLS_CC);
+ }
+ /* }}} */
+
+@@ -168,10 +168,10 @@ static PHP_METHOD(amqp_exchange_class, setFlags)
+ /* Set the flags based on the bitmask we were given */
+ flagBitmask = flagBitmask ? flagBitmask & PHP_AMQP_EXCHANGE_FLAGS : flagBitmask;
+
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL("passive"), IS_PASSIVE(flagBitmask) TSRMLS_CC);
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL("durable"), IS_DURABLE(flagBitmask) TSRMLS_CC);
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL("auto_delete"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL("internal"), IS_INTERNAL(flagBitmask) TSRMLS_CC);
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("passive"), IS_PASSIVE(flagBitmask) TSRMLS_CC);
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("durable"), IS_DURABLE(flagBitmask) TSRMLS_CC);
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("auto_delete"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("internal"), IS_INTERNAL(flagBitmask) TSRMLS_CC);
+ }
+ /* }}} */
+
+@@ -204,7 +204,7 @@ static PHP_METHOD(amqp_exchange_class, setType)
+ return;
+ }
+
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("type"), type, type_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("type"), type, type_len TSRMLS_CC);
+ }
+ /* }}} */
+
+@@ -273,7 +273,7 @@ static PHP_METHOD(amqp_exchange_class, setArguments)
+ return;
+ }
+
+- zend_update_property(this_ce, getThis(), ZEND_STRL("arguments"), zvalArguments TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("arguments"), zvalArguments TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+diff --git a/amqp_queue.c b/amqp_queue.c
+index c13629c..eeba144 100644
+--- a/amqp_queue.c
++++ b/amqp_queue.c
+@@ -68,20 +68,20 @@ static PHP_METHOD(amqp_queue_class, __construct)
+ zval *channelObj;
+ amqp_channel_resource *channel_resource;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &channelObj) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &channelObj, amqp_channel_class_entry) == FAILURE) {
+ return;
+ }
+
+ PHP5to7_MAYBE_INIT(arguments);
+ PHP5to7_ARRAY_INIT(arguments);
+- zend_update_property(this_ce, getThis(), ZEND_STRL("arguments"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("arguments"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);
+ PHP5to7_MAYBE_DESTROY(arguments);
+
+ channel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(channelObj);
+ PHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, "Could not create queue.");
+
+- zend_update_property(this_ce, getThis(), ZEND_STRL("channel"), channelObj TSRMLS_CC);
+- zend_update_property(this_ce, getThis(), ZEND_STRL("connection"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, "connection") TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("channel"), channelObj TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("connection"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, "connection") TSRMLS_CC);
+
+ }
+ /* }}} */
+@@ -122,7 +122,7 @@ static PHP_METHOD(amqp_queue_class, setName)
+ }
+
+ /* Set the queue name */
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("name"), name, name_len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("name"), name, name_len TSRMLS_CC);
+
+ /* BC */
+ RETURN_TRUE;
+@@ -175,10 +175,10 @@ static PHP_METHOD(amqp_queue_class, setFlags)
+ /* Set the flags based on the bitmask we were given */
+ flagBitmask = flagBitmask ? flagBitmask & PHP_AMQP_QUEUE_FLAGS : flagBitmask;
+
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL("passive"), IS_PASSIVE(flagBitmask) TSRMLS_CC);
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL("durable"), IS_DURABLE(flagBitmask) TSRMLS_CC);
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL("exclusive"), IS_EXCLUSIVE(flagBitmask) TSRMLS_CC);
+- zend_update_property_bool(this_ce, getThis(), ZEND_STRL("auto_delete"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("passive"), IS_PASSIVE(flagBitmask) TSRMLS_CC);
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("durable"), IS_DURABLE(flagBitmask) TSRMLS_CC);
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("exclusive"), IS_EXCLUSIVE(flagBitmask) TSRMLS_CC);
++ zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("auto_delete"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);
+
+ /* BC */
+ RETURN_TRUE;
+@@ -250,7 +250,7 @@ static PHP_METHOD(amqp_queue_class, setArguments)
+ return;
+ }
+
+- zend_update_property(this_ce, getThis(), ZEND_STRL("arguments"), zvalArguments TSRMLS_CC);
++ zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("arguments"), zvalArguments TSRMLS_CC);
+
+ RETURN_TRUE;
+ }
+@@ -342,7 +342,7 @@ static PHP_METHOD(amqp_queue_class, declareQueue)
+
+ /* Set the queue name, in case it is an autogenerated queue name */
+ name = php_amqp_type_amqp_bytes_to_char(r->queue);
+- zend_update_property_string(this_ce, getThis(), ZEND_STRL("name"), name TSRMLS_CC);
++ zend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("name"), name TSRMLS_CC);
+ efree(name);
+
+ php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
+@@ -525,7 +525,7 @@ static PHP_METHOD(amqp_queue_class, consume)
+ }
+
+ zval *channel_zv = PHP_AMQP_READ_THIS_PROP("channel");
+- zval *consumers = zend_read_property(amqp_channel_class_entry, channel_zv, ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
++ zval *consumers = zend_read_property(amqp_channel_class_entry, PHP5to8_OBJ_PROP(channel_zv), ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
+
+ if (IS_ARRAY != Z_TYPE_P(consumers)) {
+ zend_throw_exception(amqp_queue_exception_class_entry, "Invalid channel consumers, forgot to call channel constructor?", 0 TSRMLS_CC);
+@@ -594,7 +594,7 @@ static PHP_METHOD(amqp_queue_class, consume)
+ efree(key);
+
+ /* Set the consumer tag name, in case it is an autogenerated consumer tag name */
+- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("consumer_tag"), (const char *) r->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) r->consumer_tag.len TSRMLS_CC);
++ zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("consumer_tag"), (const char *) r->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) r->consumer_tag.len TSRMLS_CC);
+ }
+
+ if (!ZEND_FCI_INITIALIZED(fci)) {
+@@ -674,7 +674,7 @@ static PHP_METHOD(amqp_queue_class, consume)
+ current_channel_zv = current_channel_resource->parent->this_ptr;
+ #endif
+
+- consumers = zend_read_property(amqp_channel_class_entry, PHP5to7_MAYBE_PTR(current_channel_zv), ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
++ consumers = zend_read_property(amqp_channel_class_entry, PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PTR(current_channel_zv)), ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
+
+ if (IS_ARRAY != Z_TYPE_P(consumers)) {
+ zend_throw_exception(amqp_queue_exception_class_entry, "Invalid channel consumers, forgot to call channel constructor?", 0 TSRMLS_CC);
+@@ -689,8 +689,8 @@ static PHP_METHOD(amqp_queue_class, consume)
+ PHP5to7_zval_t exception PHP5to7_MAYBE_SET_TO_NULL;
+ PHP5to7_MAYBE_INIT(exception);
+ object_init_ex(PHP5to7_MAYBE_PTR(exception), amqp_envelope_exception_class_entry);
+- zend_update_property_string(zend_exception_get_default(TSRMLS_C), PHP5to7_MAYBE_PTR(exception), ZEND_STRL("message"), "Orphaned envelope" TSRMLS_CC);
+- zend_update_property(amqp_envelope_exception_class_entry, PHP5to7_MAYBE_PTR(exception), ZEND_STRL("envelope"), PHP5to7_MAYBE_PTR(message) TSRMLS_CC);
++ zend_update_property_string(zend_exception_get_default(TSRMLS_C), PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PTR(exception)), ZEND_STRL("message"), "Orphaned envelope" TSRMLS_CC);
++ zend_update_property(amqp_envelope_exception_class_entry, PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PTR(exception)), ZEND_STRL("envelope"), PHP5to7_MAYBE_PTR(message) TSRMLS_CC);
+
+ zend_throw_exception_object(PHP5to7_MAYBE_PTR(exception) TSRMLS_CC);
+
+@@ -946,7 +946,7 @@ static PHP_METHOD(amqp_queue_class, cancel)
+ }
+
+ zval *channel_zv = PHP_AMQP_READ_THIS_PROP("channel");
+- zval *consumers = zend_read_property(amqp_channel_class_entry, channel_zv, ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
++ zval *consumers = zend_read_property(amqp_channel_class_entry, PHP5to8_OBJ_PROP(channel_zv), ZEND_STRL("consumers"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);
+ zend_bool has_consumer_tag = (zend_bool) (IS_STRING == Z_TYPE_P(PHP_AMQP_READ_THIS_PROP("consumer_tag")));
+
+ if (IS_ARRAY != Z_TYPE_P(consumers)) {
+@@ -977,8 +977,8 @@ static PHP_METHOD(amqp_queue_class, cancel)
+ return;
+ }
+
+- if (!consumer_tag_len || has_consumer_tag && strcmp(consumer_tag, PHP_AMQP_READ_THIS_PROP_STR("consumer_tag")) != 0) {
+- zend_update_property_null(this_ce, getThis(), ZEND_STRL("consumer_tag") TSRMLS_CC);
++ if (!consumer_tag_len || (has_consumer_tag && strcmp(consumer_tag, PHP_AMQP_READ_THIS_PROP_STR("consumer_tag")) != 0)) {
++ zend_update_property_null(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("consumer_tag") TSRMLS_CC);
+ }
+
+ char *key;
+diff --git a/amqp_timestamp.c b/amqp_timestamp.c
+index d9eec39..ed07ab6 100644
+--- a/amqp_timestamp.c
++++ b/amqp_timestamp.c
+@@ -61,7 +61,7 @@ static PHP_METHOD(amqp_timestamp_class, __construct)
+ #if PHP_MAJOR_VERSION >= 7
+ zend_string *str;
+ str = _php_math_number_format_ex(timestamp, 0, "", 0, "", 0);
+- zend_update_property_str(this_ce, getThis(), ZEND_STRL("timestamp"), str);
++ zend_update_property_str(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL("timestamp"), str);
+ zend_string_delref(str);
+ #else
+ char *str;
+@@ -104,7 +104,11 @@ ZEND_END_ARG_INFO()
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_timestamp_class_getTimestamp, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_MAJOR_VERSION < 8
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_timestamp_class_toString, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
++#else
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_amqp_timestamp_class_toString, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, IS_STRING, 0)
++#endif
+ ZEND_END_ARG_INFO()
+
+ zend_function_entry amqp_timestamp_class_functions[] = {
+diff --git a/amqp_type.c b/amqp_type.c
+index fb87727..5f1ab91 100644
+--- a/amqp_type.c
++++ b/amqp_type.c
+@@ -250,7 +250,7 @@ zend_bool php_amqp_type_internal_convert_php_to_amqp_field_value(zval *value, am
+ if (instanceof_function(Z_OBJCE_P(value), amqp_timestamp_class_entry TSRMLS_CC)) {
+ PHP5to7_zval_t result_zv PHP5to7_MAYBE_SET_TO_NULL;
+
+- zend_call_method_with_0_params(PHP5to7_MAYBE_PARAM_PTR(value), amqp_timestamp_class_entry, NULL, "gettimestamp", &result_zv);
++ zend_call_method_with_0_params(PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PARAM_PTR(value)), amqp_timestamp_class_entry, NULL, "gettimestamp", &result_zv);
+
+ field->kind = AMQP_FIELD_KIND_TIMESTAMP;
+ field->value.u64 = strtoimax(Z_STRVAL(PHP5to7_MAYBE_DEREF(result_zv)), NULL, 10);
+@@ -262,11 +262,11 @@ zend_bool php_amqp_type_internal_convert_php_to_amqp_field_value(zval *value, am
+ field->kind = AMQP_FIELD_KIND_DECIMAL;
+ PHP5to7_zval_t result_zv PHP5to7_MAYBE_SET_TO_NULL;
+
+- zend_call_method_with_0_params(PHP5to7_MAYBE_PARAM_PTR(value), amqp_decimal_class_entry, NULL, "getexponent", &result_zv);
++ zend_call_method_with_0_params(PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PARAM_PTR(value)), amqp_decimal_class_entry, NULL, "getexponent", &result_zv);
+ field->value.decimal.decimals = (uint8_t)Z_LVAL(PHP5to7_MAYBE_DEREF(result_zv));
+ PHP5to7_MAYBE_DESTROY(result_zv);
+
+- zend_call_method_with_0_params(PHP5to7_MAYBE_PARAM_PTR(value), amqp_decimal_class_entry, NULL, "getsignificand", &result_zv);
++ zend_call_method_with_0_params(PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PARAM_PTR(value)), amqp_decimal_class_entry, NULL, "getsignificand", &result_zv);
+ field->value.decimal.value = (uint32_t)Z_LVAL(PHP5to7_MAYBE_DEREF(result_zv));
+
+ PHP5to7_MAYBE_DESTROY(result_zv);
+diff --git a/php5_support.h b/php5_support.h
+index 5c57620..25c2d96 100644
+--- a/php5_support.h
++++ b/php5_support.h
+@@ -109,6 +109,8 @@ typedef zend_rsrc_list_entry PHP5to7_zend_resource_le_t;
+ #define ZEND_ULONG_FMT "%" PRIu64
+ #define PHP5to7_ZEND_ACC_FINAL_CLASS ZEND_ACC_FINAL_CLASS
+
++#define PHP5to8_OBJ_PROP(zv) (zv)
++
+ #endif //PHP_AMQP_PHP5_SUPPORT_H
+
+ /*
+diff --git a/php7_support.h b/php7_support.h
+index c9e8f5b..0dbd6b2 100644
+--- a/php7_support.h
++++ b/php7_support.h
+@@ -101,15 +101,24 @@ typedef zval PHP5to7_zend_resource_le_t;
+
+ #define PHP5to7_ZEND_ACC_FINAL_CLASS ZEND_ACC_FINAL
+
++
+ /* Small change to let it build after a major internal change for php8.0
+ * More info:
+ * https://github.com/php/php-src/blob/php-8.0.0alpha3/UPGRADING.INTERNALS#L47
+ */
+ #if PHP_MAJOR_VERSION >= 8
++
+ # define TSRMLS_DC
+ # define TSRMLS_D
+ # define TSRMLS_CC
+ # define TSRMLS_C
++
++#define PHP5to8_OBJ_PROP(zv) Z_OBJ_P(zv)
++
++#else
++
++#define PHP5to8_OBJ_PROP(zv) (zv)
++
+ # endif
+
+ #endif //PHP_AMQP_PHP7_SUPPORT_H
+diff --git a/php_amqp.h b/php_amqp.h
+index 752edd7..686741d 100644
+--- a/php_amqp.h
++++ b/php_amqp.h
+@@ -221,14 +221,14 @@ struct _amqp_connection_object {
+ #define PHP_AMQP_NOPARAMS() if (zend_parse_parameters_none() == FAILURE) { return; }
+
+ #define PHP_AMQP_RETURN_THIS_PROP(prop_name) \
+- zval * _zv = zend_read_property(this_ce, getThis(), ZEND_STRL(prop_name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC); \
++ zval * _zv = zend_read_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(prop_name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC); \
+ RETURN_ZVAL(_zv, 1, 0);
+
+-#define PHP_AMQP_READ_OBJ_PROP(cls, obj, name) zend_read_property((cls), (obj), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
++#define PHP_AMQP_READ_OBJ_PROP(cls, obj, name) zend_read_property((cls), PHP5to8_OBJ_PROP(obj), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
+ #define PHP_AMQP_READ_OBJ_PROP_DOUBLE(cls, obj, name) Z_DVAL_P(PHP_AMQP_READ_OBJ_PROP((cls), (obj), (name)))
+
+-#define PHP_AMQP_READ_THIS_PROP_CE(name, ce) zend_read_property((ce), getThis(), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
+-#define PHP_AMQP_READ_THIS_PROP(name) zend_read_property(this_ce, getThis(), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
++#define PHP_AMQP_READ_THIS_PROP_CE(name, ce) zend_read_property((ce), PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
++#define PHP_AMQP_READ_THIS_PROP(name) zend_read_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
+ #define PHP_AMQP_READ_THIS_PROP_BOOL(name) Z_BVAL_P(PHP_AMQP_READ_THIS_PROP(name))
+ #define PHP_AMQP_READ_THIS_PROP_STR(name) Z_STRVAL_P(PHP_AMQP_READ_THIS_PROP(name))
+ #define PHP_AMQP_READ_THIS_PROP_STRLEN(name) (Z_TYPE_P(PHP_AMQP_READ_THIS_PROP(name)) == IS_STRING ? Z_STRLEN_P(PHP_AMQP_READ_THIS_PROP(name)) : 0)
+diff --git a/tests/amqptimestamp.phpt b/tests/amqptimestamp.phpt
+index 9835883..6424f8b 100644
+--- a/tests/amqptimestamp.phpt
++++ b/tests/amqptimestamp.phpt
+@@ -2,7 +2,7 @@
+ AMQPTimestamp
+ --SKIPIF--
+ <?php
+-if (!extension_loaded("amqp") || version_compare(PHP_VERSION, '5.3', '<')) {
++if (!extension_loaded("amqp") || version_compare(PHP_VERSION, '5.3', '<') || version_compare(PHP_VERSION, '8.0', '>')) {
+ print "skip";
+ }
+ --FILE--
+@@ -52,4 +52,4 @@ bool(true)
+ string(20) "18446744073709551616"
+ string(1) "0"
+
+-==END==
+\ No newline at end of file
++==END==
+diff --git a/tests/amqptimestamp_php8.phpt b/tests/amqptimestamp_php8.phpt
+new file mode 100644
+index 0000000..dabecc5
+--- /dev/null
++++ b/tests/amqptimestamp_php8.phpt
+@@ -0,0 +1,60 @@
++--TEST--
++AMQPTimestamp
++--SKIPIF--
++<?php
++if (!extension_loaded("amqp") || version_compare(PHP_VERSION, '8.0', '<')) {
++ print "skip";
++}
++--FILE--
++<?php
++
++$timestamp = new AMQPTimestamp(100000);
++var_dump($timestamp->getTimestamp(), (string) $timestamp);
++
++$timestamp = new AMQPTimestamp(100000.1);
++var_dump($timestamp->getTimestamp(), (string) $timestamp);
++
++try {
++ new AMQPTimestamp();
++} catch(ArgumentCountError $e) {
++ echo $e->getMessage() . "\n";
++}
++try {
++ new AMQPTimestamp("string");
++} catch(TypeError $e) {
++ echo $e->getMessage() . "\n";
++}
++
++try {
++ new AMQPTimestamp(AMQPTimestamp::MIN - 1);
++} catch (AMQPValueException $e) {
++ echo $e->getMessage() . "\n";
++}
++
++try {
++ new AMQPTimestamp(INF);
++} catch (AMQPValueException $e) {
++ echo $e->getMessage() . "\n";
++}
++
++var_dump((new ReflectionClass("AMQPTimestamp"))->isFinal());
++
++var_dump(AMQPTimestamp::MAX);
++var_dump(AMQPTimestamp::MIN);
++?>
++
++==END==
++--EXPECTF--
++string(6) "100000"
++string(6) "100000"
++string(6) "100000"
++string(6) "100000"
++AMQPTimestamp::__construct() expects exactly 1 parameter, 0 given
++AMQPTimestamp::__construct(): Argument #1 ($timestamp) must be of type float, string given
++The timestamp parameter must be greater than 0.
++The timestamp parameter must be less than 18446744073709551616.
++bool(true)
++string(20) "18446744073709551616"
++string(1) "0"
++
++==END==
+diff --git a/tests/bug_61533.phpt b/tests/bug_61533.phpt
+index ecb5213..f53c315 100644
+--- a/tests/bug_61533.phpt
++++ b/tests/bug_61533.phpt
+@@ -21,4 +21,4 @@ try {
+
+ ?>
+ --EXPECTF--
+-%s: Argument 1 passed to AMQPQueue::__construct() must be an instance of AMQPChannel, instance of AMQPConnection given%s
++%s AMQPChannel%s AMQPConnection%s
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread