diff -pruN 8.7.0-7.1/debian/changelog 8.7.0-7.1ubuntu11/debian/changelog
--- 8.7.0-7.1/debian/changelog	2020-12-09 21:02:13.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/changelog	2022-04-30 01:56:32.000000000 +0000
@@ -1,3 +1,80 @@
+kopanocore (8.7.0-7.1ubuntu11) kinetic; urgency=medium
+
+  * No-change rebuild against libicu71
+
+ -- Steve Langasek <steve.langasek@ubuntu.com>  Sat, 30 Apr 2022 01:56:32 +0000
+
+kopanocore (8.7.0-7.1ubuntu10) jammy; urgency=medium
+
+  * No-change rebuild for icu soname change.
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed, 09 Feb 2022 19:17:40 +0100
+
+kopanocore (8.7.0-7.1ubuntu9) jammy; urgency=medium
+
+  * No-change rebuild with Python 3.10 as default version
+
+ -- Graham Inggs <ginggs@ubuntu.com>  Thu, 13 Jan 2022 19:30:17 +0000
+
+kopanocore (8.7.0-7.1ubuntu8) jammy; urgency=medium
+
+  * No-change rebuild against libjsoncpp25
+
+ -- Steve Langasek <steve.langasek@ubuntu.com>  Tue, 14 Dec 2021 18:19:35 +0000
+
+kopanocore (8.7.0-7.1ubuntu7) jammy; urgency=medium
+
+  * No-change rebuild against libssl3
+
+ -- Steve Langasek <steve.langasek@ubuntu.com>  Wed, 08 Dec 2021 23:35:12 +0000
+
+kopanocore (8.7.0-7.1ubuntu6) jammy; urgency=medium
+
+  * Cherry-pick part of upstream commit
+    4289ecc9147260fd92adfab294935446c29793dd to fix a newer gcc-11 build
+    failure.
+
+ -- Gianfranco Costamagna <locutusofborg@debian.org>  Sun, 07 Nov 2021 21:30:40 +0100
+
+kopanocore (8.7.0-7.1ubuntu5) jammy; urgency=medium
+
+  * No-change rebuild against libgsoap-2.8.117
+
+ -- Steve Langasek <steve.langasek@ubuntu.com>  Sun, 07 Nov 2021 17:22:18 +0000
+
+kopanocore (8.7.0-7.1ubuntu4) impish; urgency=medium
+
+  * d/p/add-php8-support.patch: Update for PHP 8.0.
+    - Drop PHP5 support (e.g. deprecated TSRMLS_* constants.
+      Backport of upstream commit 9b3bbd27 "Add PHP 8 compilation support".
+
+ -- Bryce Harrington <bryce@canonical.com>  Thu, 24 Jun 2021 19:54:14 +0000
+
+kopanocore (8.7.0-7.1ubuntu3) impish; urgency=medium
+
+  * No-change rebuild due to OpenLDAP soname bump.
+
+ -- Sergio Durigan Junior <sergio.durigan@canonical.com>  Mon, 21 Jun 2021 17:49:21 -0400
+
+kopanocore (8.7.0-7.1ubuntu2) hirsute; urgency=medium
+
+  * debian/tests/smoke: mariadb provides /etc/init.d/mariadb, not
+    /etc/init.d/mysql.
+
+ -- Steve Langasek <steve.langasek@ubuntu.com>  Tue, 06 Apr 2021 17:27:49 -0700
+
+kopanocore (8.7.0-7.1ubuntu1) hirsute; urgency=medium
+
+  * Merge from Debian unstable, remaining changes:
+    - debian/tests/smoke:
+      - observed password prompt interractively
+      - set debconf frontent to non-interactive, which then fails the test
+      - preseed password prompt, test now passes
+    - Revert init system changes, something on them broke the smoke test
+    - Mark few symbols as optional, disappearing on s390x
+
+ -- Steve Langasek <steve.langasek@ubuntu.com>  Tue, 06 Apr 2021 08:48:41 -0700
+
 kopanocore (8.7.0-7.1) unstable; urgency=medium
 
   * Non-maintainer upload
@@ -5,6 +82,35 @@ kopanocore (8.7.0-7.1) unstable; urgency
 
  -- Gianfranco Costamagna <locutusofborg@debian.org>  Wed, 09 Dec 2020 22:02:13 +0100
 
+kopanocore (8.7.0-7ubuntu5) hirsute; urgency=medium
+
+  * No change rebuild against new libhx ABI.
+
+ -- Dimitri John Ledkov <xnox@ubuntu.com>  Tue, 10 Nov 2020 11:28:22 +0000
+
+kopanocore (8.7.0-7ubuntu4) groovy; urgency=medium
+
+  * No-change rebuild against libicu67
+
+ -- Steve Langasek <steve.langasek@ubuntu.com>  Tue, 28 Jul 2020 16:13:15 +0000
+
+kopanocore (8.7.0-7ubuntu3) groovy; urgency=medium
+
+  * Mark few symbols as optional, disappearing on s390x
+
+ -- Gianfranco Costamagna <locutusofborg@debian.org>  Sun, 26 Jul 2020 08:56:15 +0200
+
+kopanocore (8.7.0-7ubuntu1) focal; urgency=low
+
+  * Merge from Debian unstable.  Remaining changes:
+    * debian/tests/smoke:
+      - observed password prompt interractively
+      - set debconf frontent to non-interactive, which then fails the test
+      - preseed password prompt, test now passes
+    * Revert init system changes, something on them broke the smoke test
+
+ -- Gianfranco Costamagna <locutusofborg@debian.org>  Mon, 16 Mar 2020 00:04:52 +0100
+
 kopanocore (8.7.0-7) unstable; urgency=medium
 
   [ Matthias Klose ]
@@ -16,6 +122,18 @@ kopanocore (8.7.0-7) unstable; urgency=m
 
  -- Carsten Schoenert <c.schoenert@t-online.de>  Sun, 15 Mar 2020 11:05:50 +0100
 
+kopanocore (8.7.0-6ubuntu1) focal; urgency=low
+
+  * Merge from Debian unstable.  Remaining changes:
+    * debian/tests/smoke:
+      - observed password prompt interractively
+      - set debconf frontent to non-interactive, which then fails the test
+      - preseed password prompt, test now passes
+    * Revert init system changes, something on them broke the smoke test
+    * Call python3-config --libs with --embed.
+
+ -- Gianfranco Costamagna <locutusofborg@debian.org>  Wed, 05 Feb 2020 21:11:17 +0100
+
 kopanocore (8.7.0-6) unstable; urgency=medium
 
   [ Steve Langasek ]
@@ -49,6 +167,25 @@ kopanocore (8.7.0-6) unstable; urgency=m
 
  -- Carsten Schoenert <c.schoenert@t-online.de>  Sun, 02 Feb 2020 13:09:00 +0100
 
+kopanocore (8.7.0-5ubuntu8) focal; urgency=medium
+
+  * Call python3-config --libs with --embed.
+
+ -- Matthias Klose <doko@ubuntu.com>  Tue, 28 Jan 2020 12:00:45 +0100
+
+kopanocore (8.7.0-5ubuntu6) focal; urgency=medium
+
+  * debian/tests/smoke:
+    - observed password prompt interractively
+    - set debconf frontent to non-interactive, which then fails the test
+    - preseed password prompt, test now passes
+  * Revert init system changes, something on them broke the smoke test
+  * debian/apparmor/usr.sbin.kopano-search: include read permission for
+    ldconfig, and also include ldconfig.real, required on Ubuntu's
+    implementation of ldconfig.
+
+ -- Gianfranco Costamagna <locutusofborg@debian.org>  Tue, 31 Dec 2019 12:41:25 +0100
+
 kopanocore (8.7.0-5) unstable; urgency=medium
 
   [ Carsten Schoenert ]
diff -pruN 8.7.0-7.1/debian/control 8.7.0-7.1ubuntu11/debian/control
--- 8.7.0-7.1/debian/control	2020-02-02 12:08:39.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/control	2021-06-23 15:09:47.000000000 +0000
@@ -1,7 +1,8 @@
 Source: kopanocore
 Section: mail
 Priority: optional
-Maintainer: Giraffe Maintainers <pkg-giraffe-maintainers@alioth-lists.debian.net>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: Giraffe Maintainers <pkg-giraffe-maintainers@alioth-lists.debian.net>
 Uploaders: Carsten Schoenert <c.schoenert@t-online.de>,
  Matthias Geerdsen <matthias@vorlons.info>,
  Simon Eisenmann <s.eisenmann@kopano.com>,
diff -pruN 8.7.0-7.1/debian/kopano-dagent.kopano-dagent.init 8.7.0-7.1ubuntu11/debian/kopano-dagent.kopano-dagent.init
--- 8.7.0-7.1/debian/kopano-dagent.kopano-dagent.init	2019-10-18 15:38:34.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/kopano-dagent.kopano-dagent.init	2021-06-23 15:09:47.000000000 +0000
@@ -19,7 +19,7 @@ DAGENT=/usr/sbin/kopano-dagent
 DESC="kopano LMTP dagent"
 NAME=`basename $DAGENT`
 #QUIETDAEMON=--quiet
-PIDFILE=/var/run/kopano/dagent.pid
+PIDFILE=/var/run/$NAME.pid
 
 test -x $DAGENT || exit 0
 
diff -pruN 8.7.0-7.1/debian/kopano-gateway.kopano-gateway.init 8.7.0-7.1ubuntu11/debian/kopano-gateway.kopano-gateway.init
--- 8.7.0-7.1/debian/kopano-gateway.kopano-gateway.init	2019-10-18 15:38:34.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/kopano-gateway.kopano-gateway.init	2021-06-23 15:09:47.000000000 +0000
@@ -18,7 +18,7 @@ GATEWAY=/usr/sbin/kopano-gateway
 DESC="Kopano gateway"
 NAME=`basename $GATEWAY`
 #QUIETDAEMON=--quiet
-PIDFILE=/var/run/kopano/gateway.pid
+PIDFILE=/var/run/kopano-gateway.pid
 
 test -x $GATEWAY || exit 0
 
diff -pruN 8.7.0-7.1/debian/kopano-ical.kopano-ical.init 8.7.0-7.1ubuntu11/debian/kopano-ical.kopano-ical.init
--- 8.7.0-7.1/debian/kopano-ical.kopano-ical.init	2019-10-18 15:38:34.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/kopano-ical.kopano-ical.init	2021-06-23 15:09:47.000000000 +0000
@@ -18,7 +18,7 @@ ICAL=/usr/sbin/kopano-ical
 DESC="Kopano ical gateway"
 NAME=`basename $ICAL`
 #QUIETDAEMON=--quiet
-PIDFILE=/var/run/kopano/ical.pid
+PIDFILE=/var/run/kopano-ical.pid
 
 test -x $ICAL || exit 0
 
diff -pruN 8.7.0-7.1/debian/kopano-libs.symbols 8.7.0-7.1ubuntu11/debian/kopano-libs.symbols
--- 8.7.0-7.1/debian/kopano-libs.symbols	2020-03-15 10:05:50.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/kopano-libs.symbols	2021-06-23 15:09:47.000000000 +0000
@@ -88,9 +88,9 @@ libkcpyconv-3.8.so kopano-libs #MINVER#
  _Z16conv_out_defaultIN2KC9ECCOMPANYEPwXadL_ZNS1_15lpszCompanynameEEEEvPT_P7_objectPKcPvj@Base 8.5.0~8.4.99
  _Z16conv_out_defaultIN2KC9ECCOMPANYEjXadL_ZNS1_12ulIsABHiddenEEEEvPT_P7_objectPKcPvj@Base 8.5.0~8.4.99
  _Z17GetExceptionErrorP7_objectPi@Base 8.5.0~8.4.99
- _Z19Object_to_MVPROPMAPIN2KC6ECUSEREEvP7_objectRPT_j@Base 8.5.0~8.4.99
- _Z19Object_to_MVPROPMAPIN2KC7ECGROUPEEvP7_objectRPT_j@Base 8.5.0~8.4.99
- _Z19Object_to_MVPROPMAPIN2KC9ECCOMPANYEEvP7_objectRPT_j@Base 8.5.0~8.4.99
+ (optional)_Z19Object_to_MVPROPMAPIN2KC6ECUSEREEvP7_objectRPT_j@Base 8.5.0~8.4.99
+ (optional)_Z19Object_to_MVPROPMAPIN2KC7ECGROUPEEvP7_objectRPT_j@Base 8.5.0~8.4.99
+ (optional)_Z19Object_to_MVPROPMAPIN2KC9ECCOMPANYEEvP7_objectRPT_j@Base 8.5.0~8.4.99
  _Z22Object_is_LPSPropValueP7_object@Base 8.5.0~8.4.99
  _Z4Initv@Base 8.5.0~8.4.99
  _ZN4priv8conv_outIN2KC13objectclass_tEEEvP7_objectPvjPT_@Base 8.5.0~8.4.99
diff -pruN 8.7.0-7.1/debian/kopano-monitor.kopano-monitor.init 8.7.0-7.1ubuntu11/debian/kopano-monitor.kopano-monitor.init
--- 8.7.0-7.1/debian/kopano-monitor.kopano-monitor.init	2019-10-18 15:38:34.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/kopano-monitor.kopano-monitor.init	2021-06-23 15:09:47.000000000 +0000
@@ -18,7 +18,7 @@ MONITOR=/usr/sbin/kopano-monitor
 DESC="Kopano monitor"
 NAME=`basename $MONITOR`
 #QUIETDAEMON=--quiet
-PIDFILE=/var/run/kopano/monitor.pid
+PIDFILE=/var/run/kopano-monitor.pid
 
 test -x $MONITOR || exit 0
 
diff -pruN 8.7.0-7.1/debian/kopano-search.kopano-search.init 8.7.0-7.1ubuntu11/debian/kopano-search.kopano-search.init
--- 8.7.0-7.1/debian/kopano-search.kopano-search.init	2019-10-18 15:38:34.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/kopano-search.kopano-search.init	2021-06-23 15:09:47.000000000 +0000
@@ -18,7 +18,7 @@ SEARCH=/usr/sbin/kopano-search
 DESC="Kopano search"
 NAME=`basename $SEARCH`
 #QUIETDAEMON=--quiet
-PIDFILE=/var/run/kopano/search.pid
+PIDFILE=/var/run/$NAME.pid
 
 test -x $SEARCH || exit 0
 
diff -pruN 8.7.0-7.1/debian/kopano-server.kopano-server.init 8.7.0-7.1ubuntu11/debian/kopano-server.kopano-server.init
--- 8.7.0-7.1/debian/kopano-server.kopano-server.init	2019-10-18 15:38:34.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/kopano-server.kopano-server.init	2021-06-23 15:09:47.000000000 +0000
@@ -21,7 +21,7 @@ SERVER=/usr/sbin/kopano-server
 DESC="Kopano server"
 NAME=`basename $SERVER`
 #QUIETDAEMON=--quiet
-PIDFILE=/var/run/kopano/server.pid
+PIDFILE=/var/run/$NAME.pid
 
 test -x $SERVER || exit 0
 
diff -pruN 8.7.0-7.1/debian/kopano-spamd.kopano-spamd.init 8.7.0-7.1ubuntu11/debian/kopano-spamd.kopano-spamd.init
--- 8.7.0-7.1/debian/kopano-spamd.kopano-spamd.init	2019-10-18 15:38:34.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/kopano-spamd.kopano-spamd.init	2021-06-23 15:09:47.000000000 +0000
@@ -17,7 +17,7 @@ SPAMD=/usr/sbin/kopano-spamd
 DESC="Kopano spamd gateway"
 NAME=`basename $SPAMD`
 #QUIETDAEMON=--quiet
-PIDFILE=/var/run/kopano/spamd.pid
+PIDFILE=/var/run/kopano-spamd.pid
 
 test -x $SPAMD || exit 0
 
diff -pruN 8.7.0-7.1/debian/kopano-spooler.kopano-spooler.init 8.7.0-7.1ubuntu11/debian/kopano-spooler.kopano-spooler.init
--- 8.7.0-7.1/debian/kopano-spooler.kopano-spooler.init	2019-10-18 15:38:34.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/kopano-spooler.kopano-spooler.init	2021-06-23 15:09:47.000000000 +0000
@@ -19,7 +19,7 @@ SPOOLER=/usr/sbin/kopano-spooler
 DESC="Kopano spooler"
 NAME=`basename $SPOOLER`
 #QUIETDAEMONDAEMON=--quiet
-PIDFILE=/var/run/kopano/spooler.pid
+PIDFILE=/var/run/kopano-spooler.pid
 
 test -x $SPOOLER || exit 0
 
diff -pruN 8.7.0-7.1/debian/patches/add-php8-support.patch 8.7.0-7.1ubuntu11/debian/patches/add-php8-support.patch
--- 8.7.0-7.1/debian/patches/add-php8-support.patch	1970-01-01 00:00:00.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/patches/add-php8-support.patch	2021-06-24 19:54:14.000000000 +0000
@@ -0,0 +1,9192 @@
+--- a/php7-ext/ECImportContentsChangesProxy.cpp
++++ b/php7-ext/ECImportContentsChangesProxy.cpp
+@@ -49,7 +49,7 @@
+ #include "typeconversion.h"
+ #include "main.h"
+ 
+-ECImportContentsChangesProxy::ECImportContentsChangesProxy(const zval *v TSRMLS_DC) :
++ECImportContentsChangesProxy::ECImportContentsChangesProxy(const zval *v) :
+ 	m_cRef(1)
+ {
+ 	ZVAL_OBJ(&m_lpObj, Z_OBJ_P(v));
+@@ -98,8 +98,8 @@
+     ZVAL_LONG(&pvalArgs[1], ulFlags);
+     
+     ZVAL_STRING(&pvalFuncName, "Config");
+-    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 2, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Config method not present on ImportContentsChanges object");
++    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 2, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "Config method not present on ImportContentsChanges object");
+         return MAPI_E_CALL_FAILED;
+     }
+     
+@@ -117,8 +117,8 @@
+     }
+     
+     ZVAL_STRING(&pvalFuncName, "UpdateState");
+-	if (call_user_function(nullptr, &m_lpObj, &pvalFuncName, &pvalReturn, 1, &pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "UpdateState method not present on ImportContentsChanges object");
++	if (call_user_function(nullptr, &m_lpObj, &pvalFuncName, &pvalReturn, 1, &pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "UpdateState method not present on ImportContentsChanges object");
+         return MAPI_E_CALL_FAILED;
+     }
+     
+@@ -130,16 +130,16 @@
+ 	zvalplus pvalFuncName, pvalReturn, pvalArgs[3];
+ 
+     IMessage *lpMessage = NULL;
+-    HRESULT hr = PropValueArraytoPHPArray(cValues, lpPropArray, &pvalArgs[0] TSRMLS_CC);
++    HRESULT hr = PropValueArraytoPHPArray(cValues, lpPropArray, &pvalArgs[0]);
+     if(hr != hrSuccess) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert MAPI propvalue array to PHP");
++        php_error_docref(NULL, E_WARNING, "Unable to convert MAPI propvalue array to PHP");
+         return hr;
+     }
+         
+     ZVAL_LONG(&pvalArgs[1], ulFlags);
+     ZVAL_STRING(&pvalFuncName, "ImportMessageChange");
+-    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 3, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportMessageChange method not present on ImportContentsChanges object");
++    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 3, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "ImportMessageChange method not present on ImportContentsChanges object");
+         return MAPI_E_CALL_FAILED;
+     }
+         
+@@ -149,10 +149,10 @@
+     
+     if(hr != hrSuccess)
+         return hr;
+-    lpMessage = (IMessage *) zend_fetch_resource(Z_RES_P(&pvalReturn) TSRMLS_CC, name_mapi_message, le_mapi_message);
++    lpMessage = (IMessage *) zend_fetch_resource(Z_RES_P(&pvalReturn), name_mapi_message, le_mapi_message);
+         
+     if(!lpMessage) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportMessageChange() must return a valid MAPI message resource in the last argument when returning OK (0)");
++        php_error_docref(NULL, E_WARNING, "ImportMessageChange() must return a valid MAPI message resource in the last argument when returning OK (0)");
+         return MAPI_E_CALL_FAILED;
+     }         
+     
+@@ -165,11 +165,11 @@
+ 	zvalplus pvalFuncName, pvalReturn, pvalArgs[2];
+     
+     ZVAL_LONG(&pvalArgs[0], ulFlags);
+-    SBinaryArraytoPHPArray(lpSourceEntryList, &pvalArgs[1] TSRMLS_CC);
++    SBinaryArraytoPHPArray(lpSourceEntryList, &pvalArgs[1]);
+ 
+     ZVAL_STRING(&pvalFuncName, "ImportMessageDeletion");
+-    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 2, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportMessageDeletion method not present on ImportContentsChanges object");
++    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 2, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "ImportMessageDeletion method not present on ImportContentsChanges object");
+         return MAPI_E_CALL_FAILED;
+     }
+     
+@@ -180,10 +180,10 @@
+ HRESULT ECImportContentsChangesProxy::ImportPerUserReadStateChange(ULONG cElements, LPREADSTATE lpReadState) {
+ 	zvalplus pvalFuncName, pvalReturn, pvalArgs;
+     
+-	ReadStateArraytoPHPArray(cElements, lpReadState, &pvalArgs TSRMLS_CC);
++	ReadStateArraytoPHPArray(cElements, lpReadState, &pvalArgs);
+     ZVAL_STRING(&pvalFuncName, "ImportPerUserReadStateChange");
+-	if (call_user_function(nullptr, &m_lpObj, &pvalFuncName, &pvalReturn, 1, &pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportPerUserReadStateChange method not present on ImportContentsChanges object");
++	if (call_user_function(nullptr, &m_lpObj, &pvalFuncName, &pvalReturn, 1, &pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "ImportPerUserReadStateChange method not present on ImportContentsChanges object");
+         return MAPI_E_CALL_FAILED;
+     }
+     
+--- a/php7-ext/ECImportContentsChangesProxy.h
++++ b/php7-ext/ECImportContentsChangesProxy.h
+@@ -14,7 +14,7 @@
+     ULONG m_cRef;
+ 	zval m_lpObj;
+ public:
+-	ECImportContentsChangesProxy(const zval *v TSRMLS_DC);
++	ECImportContentsChangesProxy(const zval *v);
+     ~ECImportContentsChangesProxy();
+ 
+ 	virtual ULONG AddRef() override;
+--- a/php7-ext/ECImportHierarchyChangesProxy.cpp
++++ b/php7-ext/ECImportHierarchyChangesProxy.cpp
+@@ -49,7 +49,7 @@
+ #include "typeconversion.h"
+ #include "main.h"
+ 
+-ECImportHierarchyChangesProxy::ECImportHierarchyChangesProxy(const zval *v TSRMLS_DC) :
++ECImportHierarchyChangesProxy::ECImportHierarchyChangesProxy(const zval *v) :
+ 	m_cRef(1)
+ {
+ 	ZVAL_OBJ(&m_lpObj, Z_OBJ_P(v));
+@@ -98,8 +98,8 @@
+     ZVAL_LONG(&pvalArgs[1], ulFlags);
+     
+     ZVAL_STRING(&pvalFuncName, "Config");
+-    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 2, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Config method not present on ImportHierarchyChanges object");
++    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 2, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "Config method not present on ImportHierarchyChanges object");
+         return MAPI_E_CALL_FAILED;
+     }
+     
+@@ -117,8 +117,8 @@
+     }
+     
+     ZVAL_STRING(&pvalFuncName, "UpdateState");
+-    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 1, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "UpdateState method not present on ImportHierarchyChanges object");
++    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 1, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "UpdateState method not present on ImportHierarchyChanges object");
+         return MAPI_E_CALL_FAILED;
+     }
+     
+@@ -128,15 +128,15 @@
+ 
+ HRESULT ECImportHierarchyChangesProxy::ImportFolderChange(ULONG cValues, LPSPropValue lpPropArray)  {
+ 	zvalplus pvalFuncName, pvalReturn, pvalArgs[1];
+-    HRESULT hr = PropValueArraytoPHPArray(cValues, lpPropArray, &pvalArgs[0] TSRMLS_CC);
++    HRESULT hr = PropValueArraytoPHPArray(cValues, lpPropArray, &pvalArgs[0]);
+     if(hr != hrSuccess) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert MAPI propvalue array to PHP");
++        php_error_docref(NULL, E_WARNING, "Unable to convert MAPI propvalue array to PHP");
+         return hr;
+     }
+     
+     ZVAL_STRING(&pvalFuncName, "ImportFolderChange");
+-    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 1, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportFolderChange method not present on ImportHierarchyChanges object");
++    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 1, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "ImportFolderChange method not present on ImportHierarchyChanges object");
+         return MAPI_E_CALL_FAILED;
+     }
+         
+@@ -148,11 +148,11 @@
+ 	zvalplus pvalFuncName, pvalReturn, pvalArgs[2];
+     
+     ZVAL_LONG(&pvalArgs[0], ulFlags);
+-    SBinaryArraytoPHPArray(lpSourceEntryList, &pvalArgs[1] TSRMLS_CC);
++    SBinaryArraytoPHPArray(lpSourceEntryList, &pvalArgs[1]);
+ 
+     ZVAL_STRING(&pvalFuncName, "ImportFolderDeletion");
+-    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 2, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportFolderDeletion method not present on ImportHierarchyChanges object");
++    if (call_user_function(NULL, &m_lpObj, &pvalFuncName, &pvalReturn, 2, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "ImportFolderDeletion method not present on ImportHierarchyChanges object");
+         return MAPI_E_CALL_FAILED;
+     }
+     
+--- a/php7-ext/ECImportHierarchyChangesProxy.h
++++ b/php7-ext/ECImportHierarchyChangesProxy.h
+@@ -14,7 +14,7 @@
+     ULONG m_cRef;
+ 	zval m_lpObj;
+ public:
+-	ECImportHierarchyChangesProxy(const zval *v TSRMLS_DC);
++	ECImportHierarchyChangesProxy(const zval *v);
+     ~ECImportHierarchyChangesProxy();
+ 	virtual ULONG AddRef() override;
+ 	virtual ULONG Release() override;
+--- a/php7-ext/main.cpp
++++ b/php7-ext/main.cpp
+@@ -24,6 +24,7 @@
+ #include <libicalmapi/mapitovcf.hpp>
+ #include <libicalmapi/vcftomapi.hpp>
+ #include "php-ext/phpconfig.h"
++#include "php-ext/phparginfo.h"
+ #include "php-ext/ECRulesTableProxy.h"
+ 
+ /*
+@@ -37,8 +38,6 @@
+  * - do not create HRESULT variables, but use MAPI_G(hr) so the php script
+  *   can retrieve the value with mapi_last_hresult()
+  *
+- * - all internal functions need to pass TSRMLS_CC in the end, so win32 version compiles
+- *
+  * - when using "l" in zend_parse_parameters(), use 'long' (64-bit) as variable type, not ULONG (32-bit)
+  * - when using "s" in zend_parse_parameters(), the string length is "int" in PHP5 and "size_t" in PHP7. Use our php_stringsize_t typedef.
+  *
+@@ -116,36 +115,17 @@
+ typedef size_t php_stringsize_t; /* cf. va_arg call in php/Zend/zend_API.c */
+ 
+ // Destructor functions needed for the PHP resources.
+-static void _php_free_mapi_rowset(zend_resource *rsrc TSRMLS_DC);
+-
+-// Not defined anymore in PHP 5.3.0
+-#if ZEND_MODULE_API_NO >= 20071006
+-ZEND_BEGIN_ARG_INFO(first_arg_force_ref, 0)
+-        ZEND_ARG_PASS_INFO(1)
+-ZEND_END_ARG_INFO()
+-
+-ZEND_BEGIN_ARG_INFO(second_arg_force_ref, 0)
+-        ZEND_ARG_PASS_INFO(0)
+-        ZEND_ARG_PASS_INFO(1)
+-ZEND_END_ARG_INFO()
+-
+-ZEND_BEGIN_ARG_INFO(fourth_arg_force_ref, 0)
+-        ZEND_ARG_PASS_INFO(0)
+-        ZEND_ARG_PASS_INFO(0)
+-        ZEND_ARG_PASS_INFO(0)
+-        ZEND_ARG_PASS_INFO(1)
+-ZEND_END_ARG_INFO()
+-#endif
++static void _php_free_mapi_rowset(zend_resource *rsrc);
+ 
+ #define LOG_BEGIN() do { \
+ 	if (mapi_debug & 1) \
+-		php_error_docref(nullptr TSRMLS_CC, E_NOTICE, "[IN] %s", __FUNCTION__); \
++		php_error_docref(nullptr, E_NOTICE, "[IN] %s", __FUNCTION__); \
+ } while (false)
+ 
+ #define LOG_END() do { \
+ 	if (mapi_debug & 2) { \
+ 		HRESULT hrx =  MAPI_G(hr); \
+-		php_error_docref(nullptr TSRMLS_CC, E_NOTICE, "[OUT] %s: %s (%x)", __FUNCTION__, GetMAPIErrorMessage(hrx), hrx); \
++		php_error_docref(nullptr, E_NOTICE, "[OUT] %s: %s (%x)", __FUNCTION__, GetMAPIErrorMessage(hrx), hrx); \
+ 	} \
+ } while (false)
+ 
+@@ -264,198 +244,167 @@
+ /* function list so that the Zend engine will know what's here */
+ zend_function_entry mapi_functions[] =
+ {
+-	ZEND_FE(mapi_last_hresult, NULL)
+-	ZEND_FE(mapi_prop_type, NULL)
+-	ZEND_FE(mapi_prop_id, NULL)
+-	ZEND_FE(mapi_is_error, NULL)
+-	ZEND_FE(mapi_make_scode, NULL)
+-	ZEND_FE(mapi_prop_tag, NULL)
+-	ZEND_FE(mapi_createoneoff, NULL)
+-	ZEND_FE(mapi_parseoneoff, NULL)
+-	ZEND_FE(mapi_logon_zarafa, NULL)
+-	ZEND_FE(mapi_getmsgstorestable, NULL)
+-	ZEND_FE(mapi_openmsgstore, NULL)
+-	ZEND_FE(mapi_openprofilesection, NULL)
+-
+-	ZEND_FE(mapi_openaddressbook, NULL)
+-	ZEND_FE(mapi_openentry, NULL)
+-	ZEND_FE(mapi_ab_openentry, NULL)
++	ZEND_FE(mapi_last_hresult, arginfo_mapi_last_hresult)
++	ZEND_FE(mapi_prop_type, arginfo_mapi_prop_type)
++	ZEND_FE(mapi_prop_id, arginfo_mapi_prop_id)
++	ZEND_FE(mapi_is_error, arginfo_mapi_is_error)
++	ZEND_FE(mapi_make_scode, arginfo_mapi_make_scode)
++	ZEND_FE(mapi_prop_tag, arginfo_mapi_prop_tag)
++	ZEND_FE(mapi_createoneoff, arginfo_mapi_createoneoff)
++	ZEND_FE(mapi_parseoneoff, arginfo_mapi_parseoneoff)
++	ZEND_FE(mapi_logon_zarafa, arginfo_mapi_logon_zarafa)
++	ZEND_FE(mapi_getmsgstorestable, arginfo_mapi_getmsgstorestable)
++	ZEND_FE(mapi_openmsgstore, arginfo_mapi_openmsgstore)
++	ZEND_FE(mapi_openprofilesection, arginfo_mapi_openprofilesection)
++
++	ZEND_FE(mapi_openaddressbook, arginfo_mapi_openaddressbook)
++	ZEND_FE(mapi_openentry, arginfo_mapi_openentry)
++	ZEND_FE(mapi_ab_openentry, arginfo_mapi_ab_openentry)
+ 	// TODO: add other functions for le_mapi_mailuser and le_mapi_distlist
+-	ZEND_FE(mapi_ab_resolvename, NULL)
+-	ZEND_FE(mapi_ab_getdefaultdir, NULL)
++	ZEND_FE(mapi_ab_resolvename, arginfo_mapi_ab_resolvename)
++	ZEND_FE(mapi_ab_getdefaultdir, arginfo_mapi_ab_getdefaultdir)
+ 
+-	ZEND_FE(mapi_msgstore_createentryid, NULL)
+-	ZEND_FE(mapi_msgstore_getarchiveentryid, NULL)
+-	ZEND_FE(mapi_msgstore_openentry, NULL)
+-	ZEND_FE(mapi_msgstore_getreceivefolder, NULL)
+-	ZEND_FE(mapi_msgstore_entryidfromsourcekey, NULL)
+-	ZEND_FE(mapi_msgstore_openmultistoretable, NULL)
+-	ZEND_FE(mapi_msgstore_advise, NULL)
+-	ZEND_FE(mapi_msgstore_unadvise, NULL)
+-	ZEND_FE(mapi_msgstore_abortsubmit, nullptr)
+-
+-	ZEND_FE(mapi_sink_create, NULL)
+-	ZEND_FE(mapi_sink_timedwait, NULL)
+-
+-	ZEND_FE(mapi_table_queryallrows, NULL)
+-	ZEND_FE(mapi_table_queryrows, NULL)
+-	ZEND_FE(mapi_table_getrowcount, NULL)
+-	ZEND_FE(mapi_table_setcolumns, NULL)
+-	ZEND_FE(mapi_table_seekrow, NULL)
+-	ZEND_FE(mapi_table_sort, NULL)
+-	ZEND_FE(mapi_table_restrict, NULL)
+-	ZEND_FE(mapi_table_findrow, NULL)
+-	ZEND_FE(mapi_table_createbookmark, NULL)
+-	ZEND_FE(mapi_table_freebookmark, NULL)
+-
+-	ZEND_FE(mapi_folder_gethierarchytable, NULL)
+-	ZEND_FE(mapi_folder_getcontentstable, NULL)
+-	ZEND_FE(mapi_folder_createmessage, NULL)
+-	ZEND_FE(mapi_folder_createfolder, NULL)
+-	ZEND_FE(mapi_folder_deletemessages, NULL)
+-	ZEND_FE(mapi_folder_copymessages, NULL)
+-	ZEND_FE(mapi_folder_emptyfolder, NULL)
+-	ZEND_FE(mapi_folder_copyfolder, NULL)
+-	ZEND_FE(mapi_folder_deletefolder, NULL)
+-	ZEND_FE(mapi_folder_setreadflags, NULL)
+-	ZEND_FE(mapi_folder_openmodifytable, NULL)
+-	ZEND_FE(mapi_folder_setsearchcriteria, NULL)
+-	ZEND_FE(mapi_folder_getsearchcriteria, NULL)
+-
+-	ZEND_FE(mapi_message_getattachmenttable, NULL)
+-	ZEND_FE(mapi_message_getrecipienttable, NULL)
+-	ZEND_FE(mapi_message_openattach, NULL)
+-	ZEND_FE(mapi_message_createattach, NULL)
+-	ZEND_FE(mapi_message_deleteattach, NULL)
+-	ZEND_FE(mapi_message_modifyrecipients, NULL)
+-	ZEND_FE(mapi_message_submitmessage, NULL)
+-	ZEND_FE(mapi_message_setreadflag, NULL)
+-
+-	ZEND_FE(mapi_openpropertytostream, NULL)
+-	ZEND_FE(mapi_stream_write, NULL)
+-	ZEND_FE(mapi_stream_read, NULL)
+-	ZEND_FE(mapi_stream_stat, NULL)
+-	ZEND_FE(mapi_stream_seek, NULL)
+-	ZEND_FE(mapi_stream_commit, NULL)
+-	ZEND_FE(mapi_stream_setsize, NULL)
+-	ZEND_FE(mapi_stream_create, NULL)
+-
+-	ZEND_FE(mapi_attach_openobj, NULL)
+-	ZEND_FE(mapi_savechanges, NULL)
+-	ZEND_FE(mapi_getprops, NULL)
+-	ZEND_FE(mapi_setprops, NULL)
+-	ZEND_FE(mapi_copyto, NULL)
+-	ZEND_FE(mapi_openproperty, NULL)
+-	ZEND_FE(mapi_deleteprops, NULL)
+-	ZEND_FE(mapi_getnamesfromids, NULL)
+-	ZEND_FE(mapi_getidsfromnames, NULL)
+-
+-	ZEND_FE(mapi_decompressrtf, NULL)
+-
+-	ZEND_FE(mapi_rules_gettable, NULL)
+-	ZEND_FE(mapi_rules_modifytable, NULL)
+-
+-	ZEND_FE(mapi_zarafa_createuser, NULL)
+-	ZEND_FE(mapi_zarafa_setuser, NULL)
+-	ZEND_FE(mapi_zarafa_getuser_by_id, NULL)
+-	ZEND_FE(mapi_zarafa_getuser_by_name, NULL)
+-	ZEND_FE(mapi_zarafa_deleteuser, NULL)
+-	ZEND_FE(mapi_zarafa_createstore, NULL)
+-	ZEND_FE(mapi_zarafa_getuserlist, NULL)
+-	ZEND_FE(mapi_zarafa_getquota, NULL)
+-	ZEND_FE(mapi_zarafa_setquota, NULL)
+-	ZEND_FE(mapi_zarafa_creategroup, NULL)
+-	ZEND_FE(mapi_zarafa_deletegroup, NULL)
+-	ZEND_FE(mapi_zarafa_addgroupmember, NULL)
+-	ZEND_FE(mapi_zarafa_deletegroupmember, NULL)
+-	ZEND_FE(mapi_zarafa_setgroup, NULL)
+-	ZEND_FE(mapi_zarafa_getgroup_by_id, NULL)
+-	ZEND_FE(mapi_zarafa_getgroup_by_name, NULL)
+-	ZEND_FE(mapi_zarafa_getgrouplist, NULL)
+-	ZEND_FE(mapi_zarafa_getgrouplistofuser, NULL)
+-	ZEND_FE(mapi_zarafa_getuserlistofgroup, NULL)
+-	ZEND_FE(mapi_zarafa_createcompany, NULL)
+-	ZEND_FE(mapi_zarafa_deletecompany, NULL)
+-	ZEND_FE(mapi_zarafa_getcompany_by_id, NULL)
+-	ZEND_FE(mapi_zarafa_getcompany_by_name, NULL)
+-	ZEND_FE(mapi_zarafa_getcompanylist, NULL)
+-	ZEND_FE(mapi_zarafa_add_company_remote_viewlist, NULL)
+-	ZEND_FE(mapi_zarafa_del_company_remote_viewlist, NULL)
+-	ZEND_FE(mapi_zarafa_get_remote_viewlist, NULL)
+-	ZEND_FE(mapi_zarafa_add_user_remote_adminlist, NULL)
+-	ZEND_FE(mapi_zarafa_del_user_remote_adminlist, NULL)
+-	ZEND_FE(mapi_zarafa_get_remote_adminlist, NULL)
+-	ZEND_FE(mapi_zarafa_add_quota_recipient, NULL)
+-	ZEND_FE(mapi_zarafa_del_quota_recipient, NULL)
+-	ZEND_FE(mapi_zarafa_get_quota_recipientlist, NULL)
+-	ZEND_FE(mapi_zarafa_getpermissionrules, NULL)
+-	ZEND_FE(mapi_zarafa_setpermissionrules, NULL)
+-
+-	ZEND_FE(mapi_freebusy_openmsg, NULL)
+-	ZEND_FE(mapi_freebusysupport_open, NULL)
+-	ZEND_FE(mapi_freebusysupport_close, NULL)
+-	ZEND_FE(mapi_freebusysupport_loaddata, NULL)
+-	ZEND_FE(mapi_freebusysupport_loadupdate, NULL)
+-
+-	ZEND_FE(mapi_freebusydata_enumblocks, NULL)
+-	ZEND_FE(mapi_freebusydata_getpublishrange, NULL)
+-	ZEND_FE(mapi_freebusydata_setrange, NULL)
+-
+-	ZEND_FE(mapi_freebusyenumblock_reset, NULL)
+-	ZEND_FE(mapi_freebusyenumblock_next, NULL)
+-	ZEND_FE(mapi_freebusyenumblock_skip, NULL)
+-	ZEND_FE(mapi_freebusyenumblock_restrict, NULL)
+-	ZEND_FE(mapi_freebusyenumblock_ical, NULL)
+-
+-	ZEND_FE(mapi_freebusyupdate_publish, NULL)
+-	ZEND_FE(mapi_freebusyupdate_reset, NULL)
+-	ZEND_FE(mapi_freebusyupdate_savechanges, NULL)
+-
+-	ZEND_FE(mapi_exportchanges_config, NULL)
+-	ZEND_FE(mapi_exportchanges_synchronize, NULL)
+-	ZEND_FE(mapi_exportchanges_updatestate, NULL)
+-	ZEND_FE(mapi_exportchanges_getchangecount, NULL)
+-
+-	ZEND_FE(mapi_importcontentschanges_config, NULL)
+-	ZEND_FE(mapi_importcontentschanges_updatestate, NULL)
+-	ZEND_FE(mapi_importcontentschanges_importmessagechange, fourth_arg_force_ref)
+-	ZEND_FE(mapi_importcontentschanges_importmessagedeletion, NULL)
+-	ZEND_FE(mapi_importcontentschanges_importperuserreadstatechange, NULL)
+-	ZEND_FE(mapi_importcontentschanges_importmessagemove, NULL)
+-
+-	ZEND_FE(mapi_importhierarchychanges_config, NULL)
+-	ZEND_FE(mapi_importhierarchychanges_updatestate, NULL)
+-	ZEND_FE(mapi_importhierarchychanges_importfolderchange, NULL)
+-	ZEND_FE(mapi_importhierarchychanges_importfolderdeletion, NULL)
+-
+-	ZEND_FE(mapi_wrap_importcontentschanges, first_arg_force_ref)
+-	ZEND_FE(mapi_wrap_importhierarchychanges, first_arg_force_ref)
+-
+-	ZEND_FE(mapi_inetmapi_imtoinet, NULL)
+-	ZEND_FE(mapi_inetmapi_imtomapi, NULL)
+-
+-	ZEND_FE(mapi_icaltomapi, nullptr)
+-	ZEND_FE(mapi_mapitoical, nullptr)
+-
+-	ZEND_FE(mapi_vcftomapi, nullptr)
+-	ZEND_FE(mapi_mapitovcf, nullptr)
+-
+-	ZEND_FE(mapi_enable_exceptions, NULL)
+-
+-    ZEND_FE(mapi_feature, NULL)
+-
+-	ZEND_FALIAS(mapi_attach_openbin, mapi_openproperty, NULL)
+-	ZEND_FALIAS(mapi_msgstore_getprops, mapi_getprops, NULL)
+-	ZEND_FALIAS(mapi_folder_getprops, mapi_getprops, NULL)
+-	ZEND_FALIAS(mapi_message_getprops, mapi_getprops, NULL)
+-	ZEND_FALIAS(mapi_message_setprops, mapi_setprops, NULL)
+-	ZEND_FALIAS(mapi_message_openproperty, mapi_openproperty, NULL)
+-	ZEND_FALIAS(mapi_attach_getprops, mapi_getprops, NULL)
+-	ZEND_FALIAS(mapi_attach_openproperty, mapi_openproperty, NULL)
+-	ZEND_FALIAS(mapi_message_savechanges, mapi_savechanges, NULL)
++	ZEND_FE(mapi_msgstore_createentryid, arginfo_mapi_msgstore_createentryid)
++	ZEND_FE(mapi_msgstore_getarchiveentryid, arginfo_mapi_msgstore_getarchiveentryid)
++	ZEND_FE(mapi_msgstore_openentry, arginfo_mapi_msgstore_openentry)
++	ZEND_FE(mapi_msgstore_getreceivefolder, arginfo_mapi_msgstore_getreceivefolder)
++	ZEND_FE(mapi_msgstore_entryidfromsourcekey, arginfo_mapi_msgstore_entryidfromsourcekey)
++	ZEND_FE(mapi_msgstore_advise, arginfo_mapi_msgstore_advise)
++	ZEND_FE(mapi_msgstore_unadvise, arginfo_mapi_msgstore_unadvise)
++	ZEND_FE(mapi_msgstore_abortsubmit, arginfo_mapi_msgstore_abortsubmit)
++
++	ZEND_FE(mapi_sink_create, arginfo_mapi_sink_create)
++	ZEND_FE(mapi_sink_timedwait, arginfo_mapi_sink_timedwait)
++
++	ZEND_FE(mapi_table_queryallrows, arginfo_mapi_table_queryallrows)
++	ZEND_FE(mapi_table_queryrows, arginfo_mapi_table_queryrows)
++	ZEND_FE(mapi_table_getrowcount, arginfo_mapi_table_getrowcount)
++	ZEND_FE(mapi_table_setcolumns, arginfo_mapi_table_setcolumns)
++	ZEND_FE(mapi_table_seekrow, arginfo_mapi_table_seekrow)
++	ZEND_FE(mapi_table_sort, arginfo_mapi_table_sort)
++	ZEND_FE(mapi_table_restrict, arginfo_mapi_table_restrict)
++
++	ZEND_FE(mapi_folder_gethierarchytable, arginfo_mapi_folder_gethierarchytable)
++	ZEND_FE(mapi_folder_getcontentstable, arginfo_mapi_folder_getcontentstable)
++	ZEND_FE(mapi_folder_createmessage, arginfo_mapi_folder_createmessage)
++	ZEND_FE(mapi_folder_createfolder, arginfo_mapi_folder_createfolder)
++	ZEND_FE(mapi_folder_deletemessages, arginfo_mapi_folder_deletemessages)
++	ZEND_FE(mapi_folder_copymessages, arginfo_mapi_folder_copymessages)
++	ZEND_FE(mapi_folder_emptyfolder, arginfo_mapi_folder_emptyfolder)
++	ZEND_FE(mapi_folder_copyfolder, arginfo_mapi_folder_copyfolder)
++	ZEND_FE(mapi_folder_deletefolder, arginfo_mapi_folder_deletefolder)
++	ZEND_FE(mapi_folder_setreadflags, arginfo_mapi_folder_setreadflags)
++	ZEND_FE(mapi_folder_openmodifytable, arginfo_mapi_folder_openmodifytable)
++	ZEND_FE(mapi_folder_setsearchcriteria, arginfo_mapi_folder_setsearchcriteria)
++	ZEND_FE(mapi_folder_getsearchcriteria, arginfo_mapi_folder_getsearchcriteria)
++
++	ZEND_FE(mapi_message_getattachmenttable, arginfo_mapi_message_getattachmenttable)
++	ZEND_FE(mapi_message_getrecipienttable, arginfo_mapi_message_getrecipientttable)
++	ZEND_FE(mapi_message_openattach, arginfo_mapi_message_openattach)
++	ZEND_FE(mapi_message_createattach, arginfo_mapi_message_createattach)
++	ZEND_FE(mapi_message_deleteattach, arginfo_mapi_message_deleteattach)
++	ZEND_FE(mapi_message_modifyrecipients, arginfo_mapi_message_modifyrecipients)
++	ZEND_FE(mapi_message_submitmessage, arginfo_mapi_message_submitmessage)
++	ZEND_FE(mapi_message_setreadflag, arginfo_mapi_message_setreadflag)
++
++	ZEND_FE(mapi_stream_write, arginfo_mapi_stream_write)
++	ZEND_FE(mapi_stream_read, arginfo_mapi_stream_read)
++	ZEND_FE(mapi_stream_stat, arginfo_mapi_stream_stat)
++	ZEND_FE(mapi_stream_seek, arginfo_mapi_stream_seek)
++	ZEND_FE(mapi_stream_commit, arginfo_mapi_stream_commit)
++	ZEND_FE(mapi_stream_setsize, arginfo_mapi_stream_setsize)
++	ZEND_FE(mapi_stream_create, arginfo_mapi_stream_create)
++
++	ZEND_FE(mapi_attach_openobj, arginfo_mapi_attach_openobj)
++	ZEND_FE(mapi_savechanges, arginfo_mapi_savechanges)
++	ZEND_FE(mapi_getprops, arginfo_mapi_getprops)
++	ZEND_FE(mapi_setprops, arginfo_mapi_setprops)
++	ZEND_FE(mapi_copyto, arginfo_mapi_copyto)
++	ZEND_FE(mapi_openproperty, arginfo_mapi_openproperty)
++	ZEND_FE(mapi_deleteprops, arginfo_mapi_deleteprops)
++	ZEND_FE(mapi_getnamesfromids, arginfo_mapi_getnamesfromids)
++	ZEND_FE(mapi_getidsfromnames, arginfo_mapi_getidsfromnames)
++
++	ZEND_FE(mapi_decompressrtf, arginfo_mapi_decompressrtf)
++
++	ZEND_FE(mapi_rules_gettable, arginfo_mapi_rules_gettable)
++	ZEND_FE(mapi_rules_modifytable, arginfo_mapi_rules_modifytable)
++
++	ZEND_FE(mapi_zarafa_getuser_by_id, arginfo_mapi_zarafa_getuser_by_id)
++	ZEND_FE(mapi_zarafa_getuser_by_name, arginfo_mapi_zarafa_getuser_by_name)
++	ZEND_FE(mapi_zarafa_getuserlist, arginfo_mapi_zarafa_getuserlist)
++	ZEND_FE(mapi_zarafa_getgrouplist, arginfo_mapi_zarafa_getgrouplist)
++	ZEND_FE(mapi_zarafa_getgrouplistofuser, arginfo_mapi_zarafa_getgrouplistofuser)
++	ZEND_FE(mapi_zarafa_getuserlistofgroup, arginfo_mapi_zarafa_getuserlistofgroup)
++	ZEND_FE(mapi_zarafa_getcompanylist, arginfo_mapi_zarafa_getcompanylist)
++	ZEND_FE(mapi_zarafa_getpermissionrules, arginfo_mapi_zarafa_getpermissionsrules)
++	ZEND_FE(mapi_zarafa_setpermissionrules, arginfo_mapi_zarafa_setpermissionsrules)
++
++	ZEND_FE(mapi_freebusy_openmsg, arginfo_mapi_freebusy_openmsg)
++	ZEND_FE(mapi_freebusysupport_open, arginfo_mapi_freebusysupport_open)
++	ZEND_FE(mapi_freebusysupport_close, arginfo_mapi_freebusysupport_close)
++	ZEND_FE(mapi_freebusysupport_loaddata, arginfo_mapi_freebusysupport_loaddata)
++	ZEND_FE(mapi_freebusysupport_loadupdate, arginfo_mapi_freebusysupport_loadupdate)
++
++	ZEND_FE(mapi_freebusydata_enumblocks, arginfo_mapi_freebusydata_enumblocks)
++	ZEND_FE(mapi_freebusydata_getpublishrange, arginfo_mapi_freebusydata_getpublishrange)
++	ZEND_FE(mapi_freebusydata_setrange, arginfo_mapi_freebusydata_setrange)
++
++	ZEND_FE(mapi_freebusyenumblock_reset, arginfo_mapi_freebusyenumblock_reset)
++	ZEND_FE(mapi_freebusyenumblock_next, arginfo_mapi_freebusyenumblock_next)
++	ZEND_FE(mapi_freebusyenumblock_skip, arginfo_mapi_freebusyenumblock_skip)
++	ZEND_FE(mapi_freebusyenumblock_restrict, arginfo_mapi_freebusyenumblock_restrict)
++	ZEND_FE(mapi_freebusyenumblock_ical, arginfo_mapi_freebusyenumblock_ical)
++
++	ZEND_FE(mapi_freebusyupdate_publish, arginfo_mapi_freebusyupdate_publish)
++	ZEND_FE(mapi_freebusyupdate_reset, arginfo_mapi_freebusyupdate_reset)
++	ZEND_FE(mapi_freebusyupdate_savechanges, arginfo_mapi_freebusyupdate_savechanges)
++
++	ZEND_FE(mapi_exportchanges_config, arginfo_mapi_exportchanges_config)
++	ZEND_FE(mapi_exportchanges_synchronize, arginfo_mapi_exportchanges_synchronize)
++	ZEND_FE(mapi_exportchanges_updatestate, arginfo_mapi_exportchanges_updatestate)
++	ZEND_FE(mapi_exportchanges_getchangecount, arginfo_mapi_exportchanges_getchangecount)
++
++	ZEND_FE(mapi_importcontentschanges_config, arginfo_mapi_importcontentschanges_config)
++	ZEND_FE(mapi_importcontentschanges_updatestate, arginfo_mapi_importcontentschanges_updatestate)
++	ZEND_FE(mapi_importcontentschanges_importmessagechange, arginfo_mapi_importcontentschanges_importmessagechange)
++	ZEND_FE(mapi_importcontentschanges_importmessagedeletion, arginfo_mapi_importcontentschanges_importmessagedeletion)
++	ZEND_FE(mapi_importcontentschanges_importperuserreadstatechange, arginfo_mapi_importcontentschanges_importperuserreadstatechange)
++	ZEND_FE(mapi_importcontentschanges_importmessagemove, arginfo_mapi_importcontentschanges_importmessagemove)
++
++	ZEND_FE(mapi_importhierarchychanges_config, arginfo_mapi_importhierarchychanges_config)
++	ZEND_FE(mapi_importhierarchychanges_updatestate, arginfo_mapi_importhierarchychanges_updatestate)
++	ZEND_FE(mapi_importhierarchychanges_importfolderchange, arginfo_mapi_importhierarchychanges_importfolderchange)
++	ZEND_FE(mapi_importhierarchychanges_importfolderdeletion, arginfo_mapi_importhierarchychanges_importfolderdeletion)
++
++	ZEND_FE(mapi_wrap_importcontentschanges, arginfo_mapi_wrap_importcontentschanges)
++	ZEND_FE(mapi_wrap_importhierarchychanges, arginfo_mapi_wrap_importcontentschanges)
++
++	ZEND_FE(mapi_inetmapi_imtoinet, arginfo_mapi_inetmapi_imtoinet)
++	ZEND_FE(mapi_inetmapi_imtomapi, arginfo_mapi_inetmapi_imtomapi)
++
++	ZEND_FE(mapi_icaltomapi, arginfo_mapi_icaltomapi)
++	ZEND_FE(mapi_mapitoical, arginfo_mapi_mapitoical)
++
++	ZEND_FE(mapi_vcftomapi, arginfo_mapi_vcftomapi)
++	ZEND_FE(mapi_mapitovcf, arginfo_mapi_mapitovcf)
++
++	ZEND_FE(mapi_enable_exceptions, arginfo_mapi_enable_exceptions)
++
++    ZEND_FE(mapi_feature, arginfo_mapi_feature)
++
++	ZEND_FALIAS(mapi_attach_openbin, mapi_openproperty, arginfo_mapi_openproperty)
++	ZEND_FALIAS(mapi_msgstore_getprops, mapi_getprops, arginfo_mapi_setprops)
++	ZEND_FALIAS(mapi_folder_getprops, mapi_getprops, arginfo_mapi_setprops)
++	ZEND_FALIAS(mapi_message_getprops, mapi_getprops, arginfo_mapi_getprops)
++	ZEND_FALIAS(mapi_message_setprops, mapi_setprops, arginfo_mapi_setprops)
++	ZEND_FALIAS(mapi_message_openproperty, mapi_openproperty, arginfo_mapi_openproperty)
++	ZEND_FALIAS(mapi_attach_getprops, mapi_getprops, arginfo_mapi_getprops)
++	ZEND_FALIAS(mapi_attach_openproperty, mapi_openproperty, arginfo_mapi_openproperty)
++	ZEND_FALIAS(mapi_message_savechanges, mapi_savechanges, arginfo_mapi_savechanges)
+ 
+-	ZEND_FE(kc_session_save, second_arg_force_ref)
+-	ZEND_FE(kc_session_restore, second_arg_force_ref)
++	ZEND_FE(kc_session_save, arginfo_kc_session_save)
++	ZEND_FE(kc_session_restore, arginfo_kc_session_restore)
+ 	{NULL, NULL, NULL}
+ };
+ 
+@@ -550,7 +499,7 @@
+ }
+ 
+ template<typename T> static void
+-_php_free_mapi_object(zend_resource *rsrc TSRMLS_DC)
++_php_free_mapi_object(zend_resource *rsrc)
+ {
+ 	if (rsrc->ptr != nullptr)
+ 		static_cast<T *>(rsrc->ptr)->Release();
+@@ -562,7 +511,7 @@
+ PHP_MINIT_FUNCTION(mapi) {
+ 	int ret = LoadSettingsFile();
+ 	if (ret != SUCCESS)
+-		return ret;
++		return FAILURE;
+ 
+ 	le_mapi_session = zend_register_list_destructors_ex(_php_free_mapi_object<IMAPISession>, nullptr, const_cast<char *>(name_mapi_session), module_number);
+ 	le_mapi_table = zend_register_list_destructors_ex(_php_free_mapi_object<IMAPITable>, nullptr, const_cast<char *>(name_mapi_table), module_number);
+@@ -610,7 +559,7 @@
+ 			lpLogger->logf(EC_LOGLEVEL_ERROR, "MAPI error: %s (%x) (method: %s, line: %d)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr), __FUNCTION__, __LINE__); \
+ 			\
+ 		if (MAPI_G(exceptions_enabled)) \
+-			zend_throw_exception(MAPI_G(exception_ce), "MAPI error ", MAPI_G(hr)  TSRMLS_CC); \
++			zend_throw_exception(MAPI_G(exception_ce), "MAPI error ", MAPI_G(hr) ); \
+ 	}
+ 
+ /**
+@@ -659,7 +608,7 @@
+ ***************************************************************/
+ 
+ // This is called when our proxy object goes out of scope
+-static void _php_free_mapi_rowset(zend_resource *rsrc TSRMLS_DC)
++static void _php_free_mapi_rowset(zend_resource *rsrc)
+ {
+ 	auto pRowSet = static_cast<SRowSet *>(rsrc->ptr);
+ 	if (pRowSet) FreeProws(pRowSet);
+@@ -681,7 +630,7 @@
+ {
+ 	long ulPropTag;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &ulPropTag) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &ulPropTag) == FAILURE) return;
+ 
+ 	RETURN_LONG(PROP_TYPE(ulPropTag));
+ }
+@@ -694,7 +643,7 @@
+ {
+ 	long ulPropTag;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &ulPropTag) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &ulPropTag) == FAILURE) return;
+ 
+ 	RETURN_LONG(PROP_ID(ulPropTag));
+ }
+@@ -706,7 +655,7 @@
+ {
+ 	long errorcode;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &errorcode) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &errorcode) == FAILURE) return;
+ 
+ 	RETURN_BOOL(IS_ERROR(errorcode));
+ }
+@@ -722,7 +671,7 @@
+ {
+ 	long sev, code;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &sev, &code) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ll", &sev, &code) == FAILURE) return;
+ 
+ 	/*
+ 	 * sev has two possible values: 0 for a warning, 1 for an error
+@@ -739,7 +688,7 @@
+ {
+ 	long ulPropID, ulPropType;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &ulPropType, &ulPropID) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ll", &ulPropType, &ulPropID) == FAILURE) return;
+ 
+ 	// PHP uses variable type 'long' internally. If a number in a string as key is used in add_assoc_*(),
+ 	// it is re-interpreted a a number when it's smaller than LONG_MAX.
+@@ -774,7 +723,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|l",
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "sss|l",
+ 		&szDisplayName, &ulDisplayNameLen,
+ 		&szType, &ulTypeLen,
+ 		&szEmailAddress, &ulEmailAddressLen, &ulFlags) == FAILURE) return;
+@@ -783,24 +732,24 @@
+ 
+ 	MAPI_G(hr) = TryConvert(szDisplayName, name);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateOneOff name conversion failed");
++		php_error_docref(NULL, E_WARNING, "CreateOneOff name conversion failed");
+ 		return;
+ 	}
+ 
+ 	MAPI_G(hr) = TryConvert(szType, type);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateOneOff type conversion failed");
++		php_error_docref(NULL, E_WARNING, "CreateOneOff type conversion failed");
+ 		return;
+ 	}
+ 
+ 	MAPI_G(hr) = TryConvert(szEmailAddress, email);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateOneOff address conversion failed");
++		php_error_docref(NULL, E_WARNING, "CreateOneOff address conversion failed");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = ECCreateOneOff((LPTSTR)name.c_str(), (LPTSTR)type.c_str(), (LPTSTR)email.c_str(), MAPI_UNICODE | ulFlags, &cbEntryID, &~lpEntryID);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateOneOff failed");
++		php_error_docref(NULL, E_WARNING, "CreateOneOff failed");
+ 		return;
+ 	}
+ 
+@@ -826,14 +775,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &lpEntryID, &cbEntryID) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &lpEntryID, &cbEntryID) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	MAPI_G(hr) = ECParseOneOff(lpEntryID, cbEntryID, wstrDisplayName, wstrType, wstrAddress);
+ 
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "ParseOneOff failed");
++		php_error_docref(NULL, E_WARNING, "ParseOneOff failed");
+ 		return;
+ 	}
+ 
+@@ -892,7 +841,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ssslss",
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ss|ssslss",
+ 		&username, &username_len, &password, &password_len, &server, &server_len,
+ 		&sslcert, &sslcert_len, &sslpass, &sslpass_len, &ulFlags,
+ 		&wa_version, &wa_version_len, &misc_version, &misc_version_len) == FAILURE) return;
+@@ -928,7 +877,7 @@
+ 
+ 	MAPI_G(hr) = mapi_util_createprof(szProfName, "ZARAFA6", 8, sPropOur);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mapi_util_getlasterror().c_str());
++		php_error_docref(NULL, E_WARNING, "%s", mapi_util_getlasterror().c_str());
+ 		return;
+ 	}
+ 
+@@ -939,14 +888,14 @@
+ 	             &~lpMAPISession);
+ 	if (MAPI_G(hr) != hrSuccess) {
+ 		mapi_util_deleteprof(szProfName);
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to logon to profile");
++		php_error_docref(NULL, E_WARNING, "Unable to logon to profile");
+ 		return;
+ 	}
+ 
+ 	// Delete the profile (it will be deleted when we close our session)
+ 	MAPI_G(hr) = mapi_util_deleteprof(szProfName);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to delete profile");
++		php_error_docref(NULL, E_WARNING, "Unable to delete profile");
+ 		return;
+ 	}
+ 
+@@ -977,7 +926,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1001,7 +950,7 @@
+ 			return;
+ 		ZEND_REGISTER_RESOURCE(return_value, msg.release(), le_mapi_message);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "EntryID is not a folder or a message.");
++		php_error_docref(NULL, E_WARNING, "EntryID is not a folder or a message.");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+@@ -1023,7 +972,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1051,12 +1000,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	if(Z_RES_P(res)->type != le_mapi_addrbook) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid address book");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid address book");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+@@ -1087,7 +1036,7 @@
+ 			return;
+ 		ZEND_REGISTER_RESOURCE(return_value, ab.release(), le_mapi_abcont);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "EntryID is not an AddressBook item");
++		php_error_docref(NULL, E_WARNING, "EntryID is not an AddressBook item");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ }
+@@ -1109,13 +1058,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &array, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &array, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpAddrBook, LPADRBOOK, &res, -1, name_mapi_addrbook, le_mapi_addrbook);
+ 
+-	MAPI_G(hr) = PHPArraytoAdrList(array, nullptr, &~lpAList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoAdrList(array, nullptr, &~lpAList);
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		return;
+ 
+@@ -1123,7 +1072,7 @@
+ 	switch (MAPI_G(hr)) {
+ 	case hrSuccess:
+ 		// parse back lpAList and return as array
+-		RowSettoPHPArray(reinterpret_cast<SRowSet *>(lpAList.get()), &rowset TSRMLS_CC); // binary compatible
++		RowSettoPHPArray(reinterpret_cast<SRowSet *>(lpAList.get()), &rowset); // binary compatible
+ 		RETVAL_ZVAL(&rowset, 0, 0);
+ 		break;
+ 	case MAPI_E_AMBIGUOUS_RECIP:
+@@ -1146,7 +1095,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1154,7 +1103,7 @@
+ 
+ 	MAPI_G(hr) = lpAddrBook->GetDefaultDir(&cbEntryID, &~lpEntryID);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Failed GetDefaultDir of addressbook: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Failed GetDefaultDir of addressbook: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -1180,7 +1129,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1189,7 +1138,7 @@
+ 	MAPI_G(hr) = lpSession->GetMsgStoresTable(0, &lpTable);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to fetch the message store table: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to fetch the message store table: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -1217,7 +1166,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs",
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs",
+ 		&res, (char *)&lpEntryID, &cbEntryID) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -1227,7 +1176,7 @@
+ 	MAPI_G(hr) = lpSession->OpenMsgStore(0, cbEntryID, lpEntryID, 0, MAPI_BEST_ACCESS | MDB_NO_DIALOG, &pMDB);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to open message store: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to open message store: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -1258,7 +1207,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpUID, &uidlen) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpUID, &uidlen) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1294,7 +1243,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1313,7 +1262,7 @@
+ 		ZEND_FETCH_RESOURCE_C(dl, decltype(dl), &res, -1, name_mapi_distlist, le_mapi_distlist);
+ 		MAPI_G(hr) = dl->GetHierarchyTable(ulFlags, &lpTable);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid IMAPIFolder or derivative");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid IMAPIFolder or derivative");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+@@ -1347,7 +1296,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1366,7 +1315,7 @@
+ 		ZEND_FETCH_RESOURCE_C(dl, decltype(dl), &res, -1, name_mapi_distlist, le_mapi_distlist);
+ 		MAPI_G(hr) = dl->GetContentsTable(ulFlags, &pTable);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid IMAPIContainer or derivative");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid IMAPIContainer or derivative");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+@@ -1396,7 +1345,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1430,15 +1379,15 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &entryid_array, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &entryid_array, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(pFolder, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, NULL, &~lpEntryList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, NULL, &~lpEntryList);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message list");
++		php_error_docref(NULL, E_WARNING, "Bad message list");
+ 		return;
+ 	}
+ 
+@@ -1469,16 +1418,16 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rar|l", &srcFolder, &msgArray, &destFolder, &flags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rar|l", &srcFolder, &msgArray, &destFolder, &flags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpSrcFolder, LPMAPIFOLDER, &srcFolder, -1, name_mapi_folder, le_mapi_folder);
+ 	ZEND_FETCH_RESOURCE_C(lpDestFolder, LPMAPIFOLDER, &destFolder, -1, name_mapi_folder, le_mapi_folder);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(msgArray, NULL, &~lpEntryList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(msgArray, NULL, &~lpEntryList);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message list");
++		php_error_docref(NULL, E_WARNING, "Bad message list");
+ 		return;
+ 	}
+ 
+@@ -1508,15 +1457,15 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &entryArray, &flags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &entryArray, &flags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFolder, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(entryArray, NULL, &~lpEntryList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(entryArray, NULL, &~lpEntryList);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message list");
++		php_error_docref(NULL, E_WARNING, "Bad message list");
+ 		return;
+ 	}
+ 
+@@ -1547,12 +1496,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|sll", &srcFolder, &lpszFolderName, &FolderNameLen, &lpszFolderComment, &FolderCommentLen, &ulFlags, &folderType) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs|sll", &srcFolder, &lpszFolderName, &FolderNameLen, &lpszFolderComment, &FolderCommentLen, &ulFlags, &folderType) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	if (FolderNameLen == 0) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Foldername cannot be empty");
++		php_error_docref(NULL, E_WARNING, "Foldername cannot be empty");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+@@ -1581,7 +1530,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs|l", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1606,7 +1555,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1641,7 +1590,7 @@
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+ 	// Params: (SrcFolder, entryid, DestFolder, (opt) New foldername, (opt) Flags)
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsr|sl", &zvalSrcFolder, &lpEntryID, &cbEntryID, &zvalDestFolder, &lpszNewFolderName, &cbNewFolderNameLen, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rsr|sl", &zvalSrcFolder, &lpEntryID, &cbEntryID, &zvalDestFolder, &lpszNewFolderName, &cbNewFolderNameLen, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1649,7 +1598,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpDestFolder, LPMAPIFOLDER, &zvalDestFolder, -1, name_mapi_folder, le_mapi_folder);
+ 
+ 	if (lpEntryID == NULL) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "EntryID must not be empty.");
++		php_error_docref(NULL, E_WARNING, "EntryID must not be empty.");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+@@ -1691,7 +1640,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &sMailboxDN, &lMailboxDN) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &sMailboxDN, &lMailboxDN) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1699,7 +1648,7 @@
+ 
+ 	MAPI_G(hr) = pMDB->QueryInterface(IID_IExchangeManageStore, &~lpEMS);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "IExchangeManageStore interface was not supported by given store.");
++		php_error_docref(NULL, E_WARNING, "IExchangeManageStore interface was not supported by given store.");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpEMS->CreateStoreEntryID(reinterpret_cast<const TCHAR *>(""), reinterpret_cast<const TCHAR *>(sMailboxDN), 0, &cbEntryID, &~lpEntryID);
+@@ -1737,7 +1686,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &sUser, &lUser, &sServer, &lServer) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &sUser, &lUser, &sServer, &lServer) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1745,7 +1694,7 @@
+ 
+ 	MAPI_G(hr) = pMDB->QueryInterface(iid_of(ptrSA), &~ptrSA);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "IECServiceAdmin interface was not supported by given store.");
++		php_error_docref(NULL, E_WARNING, "IECServiceAdmin interface was not supported by given store.");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = ptrSA->GetArchiveStoreEntryID((LPTSTR)sUser, (LPTSTR)sServer, 0, &cbEntryID, &~ptrEntryID);
+@@ -1779,7 +1728,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1805,7 +1754,7 @@
+ 			return;
+ 		ZEND_REGISTER_RESOURCE(return_value, msg.release(), le_mapi_message);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "EntryID is not a folder or a message.");
++		php_error_docref(NULL, E_WARNING, "EntryID is not a folder or a message.");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ }
+@@ -1826,7 +1775,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|s", &resStore, &lpSourceKeyFolder, &cbSourceKeyFolder, &lpSourceKeyMessage, &cbSourceKeyMessage) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rs|s", &resStore, &lpSourceKeyFolder, &cbSourceKeyFolder, &lpSourceKeyMessage, &cbSourceKeyMessage) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1858,7 +1807,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rslr", &resStore, &lpEntryId, &cbEntryId, &ulMask, &resSink) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rslr", &resStore, &lpEntryId, &cbEntryId, &ulMask, &resSink) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1886,7 +1835,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &resStore, &ulConnection) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &resStore, &ulConnection) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1925,7 +1874,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &resSink, &ulTime) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &resSink, &ulTime) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1935,9 +1884,9 @@
+ 	if(MAPI_G(hr) != hrSuccess)
+ 		return;
+ 	    
+-	MAPI_G(hr) = NotificationstoPHPArray(cNotifs, lpNotifs, &notifications TSRMLS_CC);
++	MAPI_G(hr) = NotificationstoPHPArray(cNotifs, lpNotifs, &notifications);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The notifications could not be converted to a PHP array");
++		php_error_docref(NULL, E_WARNING, "The notifications could not be converted to a PHP array");
+ 		return;
+ 	}
+ 
+@@ -1969,7 +1918,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|aa", &res, &tagArray, &restrictionArray) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|aa", &res, &tagArray, &restrictionArray) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -1981,18 +1930,18 @@
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return;
+ 
+-		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, /* result */lpRestrict, /* Base */lpRestrict TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, /* result */lpRestrict, /* Base */lpRestrict);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP srestriction array");
++			php_error_docref(NULL, E_WARNING, "Failed to convert the PHP srestriction array");
+ 			return;
+ 		}
+ 	}
+ 
+ 	if (tagArray != NULL) {
+ 		// create proptag array
+-		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP proptag array");
++			php_error_docref(NULL, E_WARNING, "Failed to convert the PHP proptag array");
+ 			return;
+ 		}
+ 	}
+@@ -2003,9 +1952,9 @@
+ 	// return the returncode
+ 	if (FAILED(MAPI_G(hr)))
+ 		return;
+-	MAPI_G(hr) = RowSettoPHPArray(pRowSet.get(), &rowset TSRMLS_CC);
++	MAPI_G(hr) = RowSettoPHPArray(pRowSet.get(), &rowset);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The resulting rowset could not be converted to a PHP array");
++		php_error_docref(NULL, E_WARNING, "The resulting rowset could not be converted to a PHP array");
+ 		return;
+ 	}
+ 	RETVAL_ZVAL(&rowset, 0, 0);
+@@ -2036,23 +1985,23 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|a!ll", &res, &tagArray, &start, &lRowCount) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|a!ll", &res, &tagArray, &start, &lRowCount) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+ 	if (tagArray != NULL) {
+-		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP Array");
++			php_error_docref(NULL, E_WARNING, "Failed to convert the PHP Array");
+ 			return;
+ 		}
+ 
+ 		MAPI_G(hr) = lpTable->SetColumns(lpTagArray, TBL_BATCH);
+ 
+ 		if (FAILED(MAPI_G(hr))) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "SetColumns failed: %s (%x)",
++			php_error_docref(nullptr, E_WARNING, "SetColumns failed: %s (%x)",
+ 				GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 			return;
+ 		}
+@@ -2063,7 +2012,7 @@
+ 		MAPI_G(hr) = lpTable->SeekRow(BOOKMARK_BEGINNING, start, NULL);
+ 
+ 		if (FAILED(MAPI_G(hr))) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "SeekRow failed: %s (%x)",
++			php_error_docref(nullptr, E_WARNING, "SeekRow failed: %s (%x)",
+ 				GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 			return;
+ 		}
+@@ -2072,9 +2021,9 @@
+ 	MAPI_G(hr) = lpTable->QueryRows(lRowCount, 0, &~pRowSet);
+ 	if (FAILED(MAPI_G(hr)))
+ 		return;
+-	MAPI_G(hr) = RowSettoPHPArray(pRowSet.get(), &rowset TSRMLS_CC);
++	MAPI_G(hr) = RowSettoPHPArray(pRowSet.get(), &rowset);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The resulting rowset could not be converted to a PHP array");
++		php_error_docref(NULL, E_WARNING, "The resulting rowset could not be converted to a PHP array");
+ 		return;
+ 	}
+ 
+@@ -2103,22 +2052,22 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &tagArray, &lFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &tagArray, &lFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+-	MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP Array");
++		php_error_docref(NULL, E_WARNING, "Failed to convert the PHP Array");
+ 		return;
+ 	}
+ 
+ 	MAPI_G(hr) = lpTable->SetColumns(lpTagArray, lFlags);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "SetColumns failed: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "SetColumns failed: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -2148,7 +2097,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &res, &lbookmark, &lRowCount) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &res, &lbookmark, &lRowCount) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2157,7 +2106,7 @@
+ 	MAPI_G(hr) = lpTable->SeekRow((BOOKMARK)lbookmark, lRowCount, (LONG*)&lRowsSought);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "SeekRow failed: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "SeekRow failed: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -2185,15 +2134,15 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &sortArray, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &sortArray, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+-	MAPI_G(hr) = PHPArraytoSortOrderSet(sortArray, NULL, &~lpSortCriteria TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSortOrderSet(sortArray, NULL, &~lpSortCriteria);
+ 	if(MAPI_G(hr) != hrSuccess)
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert sort order set from the PHP array");
++		php_error_docref(NULL, E_WARNING, "Unable to convert sort order set from the PHP array");
+ 
+ 	MAPI_G(hr) = lpTable->SortTable(lpSortCriteria, ulFlags);
+ 	if (FAILED(MAPI_G(hr)))
+@@ -2220,7 +2169,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2253,7 +2202,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &restrictionArray, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &restrictionArray, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2264,9 +2213,9 @@
+ 		lpRestrict.reset();
+ 	} else {
+ 		// create restrict array
+-		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, NULL, &~lpRestrict TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, NULL, &~lpRestrict);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP srestriction Array");
++			php_error_docref(NULL, E_WARNING, "Failed to convert the PHP srestriction Array");
+ 			return;
+ 		}
+ 	}
+@@ -2297,7 +2246,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|ll", &res, &restrictionArray, &bkOrigin, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|ll", &res, &restrictionArray, &bkOrigin, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2308,9 +2257,9 @@
+ 		lpRestrict.reset();
+ 	} else {
+ 		// create restrict array
+-		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, NULL, &~lpRestrict TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, NULL, &~lpRestrict);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP srestriction Array");
++			php_error_docref(NULL, E_WARNING, "Failed to convert the PHP srestriction Array");
+ 			return;
+ 		}
+ 	}
+@@ -2345,7 +2294,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2354,7 +2303,7 @@
+ 	MAPI_G(hr) = lpTable->CreateBookmark((BOOKMARK*)&lbookmark);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Create bookmark failed: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Create bookmark failed: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -2381,7 +2330,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &lbookmark) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &lbookmark) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2390,7 +2339,7 @@
+ 	MAPI_G(hr) = lpTable->FreeBookmark((BOOKMARK)lbookmark);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Free bookmark failed: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Free bookmark failed: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -2420,7 +2369,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2462,20 +2411,20 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &entryid_array, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &entryid_array, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMDB, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, NULL, &~lpEntryList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, NULL, &~lpEntryList);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message list");
++		php_error_docref(NULL, E_WARNING, "Bad message list");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = GetECObject(lpMDB, iid_of(lpECMST), &~lpECMST);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano object");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano object");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpECMST->OpenMultiStoreTable(lpEntryList, ulFlags, &lpMultiTable);
+@@ -2504,15 +2453,15 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rla", &res, &flags, &adrlist) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rla", &res, &flags, &adrlist) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMessage, LPMESSAGE, &res, -1, name_mapi_message, le_mapi_message);
+ 
+-	MAPI_G(hr) = PHPArraytoAdrList(adrlist, nullptr, &~lpListRecipients TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoAdrList(adrlist, nullptr, &~lpListRecipients);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse recipient list");
++		php_error_docref(NULL, E_WARNING, "Unable to parse recipient list");
+ 		return;
+ 	}
+ 
+@@ -2540,7 +2489,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2571,7 +2520,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2604,7 +2553,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &attach_num) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &attach_num) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2634,7 +2583,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &zvalMessage, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &zvalMessage, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2660,7 +2609,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|l", &zvalMessage, &attachNum, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl|l", &zvalMessage, &attachNum, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2689,7 +2638,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &lgetBytes) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &lgetBytes) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2718,7 +2667,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|l", &res, &moveBytes, &seekFlag) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl|l", &res, &moveBytes, &seekFlag) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2747,7 +2696,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &newSize) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &newSize) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2774,7 +2723,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2803,7 +2752,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &pv, &cb) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &pv, &cb) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2833,7 +2782,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2866,7 +2815,7 @@
+ 
+ 	MAPI_G(hr) = ECMemStream::Create(nullptr, 0, STGM_WRITE | STGM_SHARE_EXCLUSIVE, nullptr, nullptr, nullptr, &~lpStream);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to instantiate new stream object");
++		php_error_docref(NULL, E_WARNING, "Unable to instantiate new stream object");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpStream->QueryInterface(IID_IStream, (void**)&lpIStream);
+@@ -2903,7 +2852,7 @@
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	php_error_docref("mapi_openpropertytostream", E_DEPRECATED, "Use of mapi_openpropertytostream is deprecated, use mapi_openproperty");
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|ls", &res, &proptag, &flags, &guidStr, &guidLen) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl|ls", &res, &proptag, &flags, &guidStr, &guidLen) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2918,7 +2867,7 @@
+ 	} else if (type == le_mapi_msgstore) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown resource type");
++		php_error_docref(NULL, E_WARNING, "Unknown resource type");
+ 		return;
+ 	}
+ 
+@@ -2928,7 +2877,7 @@
+ 	} else if (guidLen == sizeof(GUID)) { // assume we have a guid if the length is right
+ 		lpGuid = (LPGUID)guidStr;
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Using the default GUID because the given GUIDs length is not right");
++		php_error_docref(NULL, E_NOTICE, "Using the default GUID because the given GUIDs length is not right");
+ 		lpGuid = (LPGUID)&IID_IStream;
+ 	}
+ 
+@@ -2958,7 +2907,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -2984,7 +2933,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &flag) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &flag) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -3017,14 +2966,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pAttach, LPATTACH, &res, -1, name_mapi_attachment, le_mapi_attachment);
+ 
+ 	MAPI_G(hr) = pAttach->OpenProperty(PR_ATTACH_DATA_OBJ, &IID_IMessage, 0, ulFlags, (LPUNKNOWN *) &lpMessage);
+ 
+ 	if (FAILED(MAPI_G(hr)))
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fetching attachmentdata as object failed");
++		php_error_docref(NULL, E_WARNING, "Fetching attachmentdata as object failed");
+ 	else
+ 		ZEND_REGISTER_RESOURCE(return_value, lpMessage, le_mapi_message);
+ 
+@@ -3058,7 +3007,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|a", &messageStore, &propNameArray, &guidArray) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|a", &messageStore, &propNameArray, &guidArray) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -3070,7 +3019,7 @@
+ 		guidHash = Z_ARRVAL_P(guidArray);
+ 	auto hashTotal = zend_hash_num_elements(targetHash);
+ 	if (guidHash && hashTotal != zend_hash_num_elements(guidHash))
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array with the guids is not of the same size as the array with the ids");
++		php_error_docref(NULL, E_WARNING, "The array with the guids is not of the same size as the array with the ids");
+ 
+ 	// allocate memory to use
+ 	MAPI_G(hr) = MAPIAllocateBuffer(sizeof(LPMAPINAMEID) * hashTotal, &~lppNamePropId);
+@@ -3095,7 +3044,7 @@
+ 
+ 		if(guidHash) {
+ 			if (Z_TYPE_P(guidEntry) != IS_STRING || sizeof(GUID) != guidEntry->value.str->len) {
+-				php_error_docref(nullptr TSRMLS_CC, E_WARNING, "The GUID with index number %u that is passed is not of the right length, cannot convert to GUID", i);
++				php_error_docref(nullptr, E_WARNING, "The GUID with index number %u that is passed is not of the right length, cannot convert to GUID", i);
+ 			} else {
+ 				MAPI_G(hr) = KAllocCopy(guidEntry->value.str->val, sizeof(GUID), reinterpret_cast<void **>(&lppNamePropId[i]->lpguid), lppNamePropId);
+ 				if (MAPI_G(hr) != hrSuccess)
+@@ -3123,14 +3072,14 @@
+ 			lppNamePropId[i]->Kind.lID = (LONG) entry->value.dval;
+ 			break;
+ 		default:
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Entry is of an unknown type: %08X", Z_TYPE_P(entry));
++			php_error_docref(NULL, E_WARNING, "Entry is of an unknown type: %08X", Z_TYPE_P(entry));
+ 			break;
+ 		}
+ 	}
+ 
+ 	MAPI_G(hr) = lpMessageStore->GetIDsFromNames(hashTotal, lppNamePropId, MAPI_CREATE, &~lpPropTagArray);
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "GetIDsFromNames failed: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "GetIDsFromNames failed: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	} else {
+@@ -3155,7 +3104,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &res, &propValueArray) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &res, &propValueArray) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -3172,13 +3121,13 @@
+ 	} else if (type == le_mapi_property) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMAPIPROP, &res, -1, name_mapi_property, le_mapi_property);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown resource type");
++		php_error_docref(NULL, E_WARNING, "Unknown resource type");
+ 		return;
+ 	}
+ 
+-	MAPI_G(hr) = PHPArraytoPropValueArray(propValueArray, NULL, &cValues, &~pPropValueArray TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropValueArray(propValueArray, NULL, &cValues, &~pPropValueArray);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert PHP property to MAPI");
++		php_error_docref(NULL, E_WARNING, "Unable to convert PHP property to MAPI");
+ 		return;
+ 	}
+ 
+@@ -3214,7 +3163,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "raar|l", &srcres, &excludeiid, &excludeprops, &dstres, &flags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "raar|l", &srcres, &excludeiid, &excludeprops, &dstres, &flags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -3229,19 +3178,19 @@
+ 	} else if (type == le_mapi_msgstore) {
+ 		ZEND_FETCH_RESOURCE_C(lpSrcObj, LPMDB, &srcres, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown resource type");
++		php_error_docref(NULL, E_WARNING, "Unknown resource type");
+ 		return;
+ 	}
+ 
+-	MAPI_G(hr) = PHPArraytoGUIDArray(excludeiid, nullptr, &cExcludeIIDs, &~lpExcludeIIDs TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoGUIDArray(excludeiid, nullptr, &cExcludeIIDs, &~lpExcludeIIDs);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse IIDs");
++		php_error_docref(NULL, E_WARNING, "Unable to parse IIDs");
+ 		return;
+ 	}
+ 
+-	MAPI_G(hr) = PHPArraytoPropTagArray(excludeprops, NULL, &~lpExcludeProps TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropTagArray(excludeprops, NULL, &~lpExcludeProps);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse property tag array");
++		php_error_docref(NULL, E_WARNING, "Unable to parse property tag array");
+ 		return;
+ 	}
+ 
+@@ -3260,7 +3209,7 @@
+ 		ZEND_FETCH_RESOURCE_C(lpDstObj, LPMDB, &dstres, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 		lpInterface = &IID_IMsgStore;
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown resource type");
++		php_error_docref(NULL, E_WARNING, "Unknown resource type");
+ 		return;
+ 	}
+ 
+@@ -3286,12 +3235,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &flags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &flags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	if (Z_TYPE_P(res) != IS_RESOURCE) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unsupported case !IS_RESOURCE.");
++		php_error_docref(NULL, E_WARNING, "Unsupported case !IS_RESOURCE.");
+ 		return;
+ 	}
+ 	type = Z_RES_P(res)->type;
+@@ -3306,14 +3255,14 @@
+ 	} else if (type == le_mapi_property) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMAPIPROP, &res, -1, name_mapi_property, le_mapi_property);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource does not exist...");
++		php_error_docref(NULL, E_WARNING, "Resource does not exist...");
+ 		return;
+ 	}
+ 
+ 	MAPI_G(hr) = lpMapiProp->SaveChanges(flags);
+ 
+ 	if (FAILED(MAPI_G(hr)))
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Failed to save object: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Failed to save object: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 	else
+ 		RETVAL_TRUE;
+@@ -3333,7 +3282,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &res, &propTagArray) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &res, &propTagArray) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -3348,13 +3297,13 @@
+ 	} else if (type == le_mapi_msgstore) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource does not exist...");
++		php_error_docref(NULL, E_WARNING, "Resource does not exist...");
+ 		return;
+ 	}
+ 
+-	MAPI_G(hr) = PHPArraytoPropTagArray(propTagArray, NULL, &~lpTagArray TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropTagArray(propTagArray, NULL, &~lpTagArray);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP Array");
++		php_error_docref(NULL, E_WARNING, "Failed to convert the PHP Array");
+ 		return;
+ 	}
+ 
+@@ -3388,7 +3337,7 @@
+ 
+ 	if(ZEND_NUM_ARGS() == 2) {
+ 		// BACKWARD COMPATIBILITY MODE.. this means that we just read the entire stream and return it as a string
+-		if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &proptag) == FAILURE) return;
++		if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &proptag) == FAILURE) return;
+ 
+ 		bBackwardCompatible = true;
+ 
+@@ -3396,7 +3345,7 @@
+ 		guidLen = sizeof(GUID);
+ 		interfaceflags = 0;
+ 		flags = 0;
+-	} else if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlsll", &res, &proptag, &guidStr, &guidLen, &interfaceflags, &flags) == FAILURE) {
++	} else if (zend_parse_parameters(ZEND_NUM_ARGS(), "rlsll", &res, &proptag, &guidStr, &guidLen, &interfaceflags, &flags) == FAILURE) {
+ 		return;
+ 	}
+ 
+@@ -3414,13 +3363,13 @@
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid MAPI resource");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid MAPI resource");
+ 		return;
+ 	}
+ 
+ 	if (guidLen != sizeof(GUID)) {
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified interface is not a valid interface identifier (wrong size)");
++		php_error_docref(NULL, E_WARNING, "Specified interface is not a valid interface identifier (wrong size)");
+ 		return;
+ 	}
+ 
+@@ -3446,14 +3395,14 @@
+ 			// Use emalloc so that it can be returned directly to PHP without copying
+ 			data = (char *)emalloc(stat.cbSize.LowPart);
+ 			if (data == NULL) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to allocate memory");
++				php_error_docref(NULL, E_WARNING, "Unable to allocate memory");
+ 				MAPI_G(hr) = MAPI_E_NOT_ENOUGH_MEMORY;
+ 				return;
+ 			}
+ 
+ 			MAPI_G(hr) = lpStream->Read(data, (ULONG)stat.cbSize.LowPart, &cRead);
+ 			if(MAPI_G(hr)) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to read the data");
++				php_error_docref(NULL, E_WARNING, "Unable to read the data");
+ 				return;
+ 			}
+ 
+@@ -3479,7 +3428,7 @@
+ 	} else if(*lpGUID == IID_IExchangeImportContentsChanges) {
+ 		ZEND_REGISTER_RESOURCE(return_value, lpUnk, le_mapi_importcontentschanges);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The openproperty call succeeded, but the PHP extension is unable to handle the requested interface");
++		php_error_docref(NULL, E_WARNING, "The openproperty call succeeded, but the PHP extension is unable to handle the requested interface");
+ 		lpUnk->Release();
+ 		MAPI_G(hr) = MAPI_E_NO_SUPPORT;
+ 		return;
+@@ -3508,7 +3457,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|a", &res, &tagArray) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|a", &res, &tagArray) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -3531,15 +3480,15 @@
+ 	} else if( type == le_mapi_property) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMAPIPROP, &res, -1, name_mapi_property, le_mapi_property);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid MAPI resource");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid MAPI resource");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+ 
+ 	if(tagArray) {
+-		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse property tag array");
++			php_error_docref(NULL, E_WARNING, "Unable to parse property tag array");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			return;
+ 		}
+@@ -3551,10 +3500,10 @@
+ 	if (FAILED(MAPI_G(hr)))
+ 		return;
+ 
+-	MAPI_G(hr) = PropValueArraytoPHPArray(cValues, lpPropValues, &zval_prop_value TSRMLS_CC);
++	MAPI_G(hr) = PropValueArraytoPHPArray(cValues, lpPropValues, &zval_prop_value);
+ 
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert properties to PHP values");
++		php_error_docref(NULL, E_WARNING, "Unable to convert properties to PHP values");
+ 		return;
+ 	}
+ 
+@@ -3579,15 +3528,15 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &res, &array) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &res, &array) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMDB, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+-	MAPI_G(hr) = PHPArraytoPropTagArray(array, NULL, &~lpPropTags TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropTagArray(array, NULL, &~lpPropTags);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert proptag array from PHP array");
++		php_error_docref(NULL, E_WARNING, "Unable to convert proptag array from PHP array");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = pMDB->GetNamesFromIDs(&+lpPropTags, NULL, 0, &cPropNames, &~pPropNames);
+@@ -3647,14 +3596,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &rtfBuffer, &rtfBufferLen) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &rtfBuffer, &rtfBufferLen) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	// make and fill the stream
+ 	MAPI_G(hr) = CreateStreamOnHGlobal(nullptr, true, &~pStream);
+ 	if (MAPI_G(hr) != hrSuccess || pStream == NULL) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to CreateStreamOnHGlobal: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
++		php_error_docref(nullptr, E_WARNING, "Unable to CreateStreamOnHGlobal: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+ 
+@@ -3663,7 +3612,7 @@
+ 	pStream->Seek(begin, SEEK_SET, NULL);
+ 	MAPI_G(hr) = WrapCompressedRTFStream(pStream, 0, &~deCompressedStream);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to wrap uncompressed stream: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
++		php_error_docref(nullptr, E_WARNING, "Unable to wrap uncompressed stream: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+ 
+@@ -3677,7 +3626,7 @@
+ 	while(1) {
+ 		MAPI_G(hr) = deCompressedStream->Read(htmlbuf.get(), bufsize, &cbRead);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Read from uncompressed stream failed: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
++			php_error_docref(nullptr, E_WARNING, "Read from uncompressed stream failed: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 			return;
+ 		}
+ 
+@@ -3707,7 +3656,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -3737,7 +3686,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -3747,11 +3696,11 @@
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		return;
+ 
+-	MAPI_G(hr) = SRestrictiontoPHPArray(lpRestriction, 0, &restriction TSRMLS_CC);
++	MAPI_G(hr) = SRestrictiontoPHPArray(lpRestriction, 0, &restriction);
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		return;
+ 
+-	MAPI_G(hr) = SBinaryArraytoPHPArray(lpFolderList, &folderlist TSRMLS_CC);
++	MAPI_G(hr) = SBinaryArraytoPHPArray(lpFolderList, &folderlist);
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		return;
+ 
+@@ -3778,17 +3727,17 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "raal", &res, &restriction, &folderlist, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "raal", &res, &restriction, &folderlist, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFolder, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+-	MAPI_G(hr) = PHPArraytoSRestriction(restriction, NULL, &~lpRestriction TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSRestriction(restriction, NULL, &~lpRestriction);
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		return;
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(folderlist, NULL, &~lpFolderList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(folderlist, NULL, &~lpFolderList);
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		return;
+ 
+@@ -3825,7 +3774,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -3872,7 +3821,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &rows, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &rows, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() {
+ 		if (lpRowList)
+@@ -3883,9 +3832,9 @@
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpRulesTable, LPEXCHANGEMODIFYTABLE, &res, -1, name_mapi_modifytable, le_mapi_modifytable);
+ 
+-	MAPI_G(hr) = PHPArraytoRowList(rows, NULL, &lpRowList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoRowList(rows, NULL, &lpRowList);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse rowlist");
++		php_error_docref(NULL, E_WARNING, "Unable to parse rowlist");
+ 		return;
+ 	}
+ 
+@@ -3922,7 +3871,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rssss|ll", &res,
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rssss|ll", &res,
+ 							&lpszUsername, &ulUsernameLen,
+ 							&lpszPassword, &ulPassword,
+ 							&lpszFullname, &ulFullname,
+@@ -3934,7 +3883,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 
+@@ -3977,14 +3926,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsssssll", &res, &lpUserId, &cbUserId, &lpszUsername, &ulUsername, &lpszFullname, &ulFullname, &lpszEmail, &ulEmail, &lpszPassword, &ulPassword, &ulIsNonactive, &ulIsAdmin) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rsssssll", &res, &lpUserId, &cbUserId, &lpszUsername, &ulUsername, &lpszFullname, &ulFullname, &lpszEmail, &ulEmail, &lpszPassword, &ulPassword, &ulIsNonactive, &ulIsAdmin) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 
+@@ -4028,26 +3977,26 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszUserName, &ulUserName) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszUserName, &ulUserName) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveUserName((TCHAR*)lpszUserName, 0, &cbUserId, &~lpUserId);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to resolve/delete user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to resolve/delete user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+ 
+ 	MAPI_G(hr) = lpServiceAdmin->DeleteUser(cbUserId, lpUserId);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to delete user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to delete user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -4074,19 +4023,19 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rls", &res, &ulStoreType, &lpUserId, &cbUserId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rls", &res, &ulStoreType, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->CreateStore(ulStoreType, cbUserId, lpUserId, &cbStoreID, &~lpStoreID, &cbRootID, &~lpRootID);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to modify user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to modify user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -4120,14 +4069,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|s", &res, &lpCompanyId, &cbCompanyId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|s", &res, &lpCompanyId, &cbCompanyId) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpSecurity), &~lpSecurity);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpSecurity->GetUserList(cbCompanyId, lpCompanyId, 0, &nUsers, &~lpUsers);
+@@ -4173,14 +4122,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetQuota(cbUserId, lpUserId, false, &~lpQuota);
+@@ -4228,12 +4177,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsa", &res, &lpUserId, &cbUserId, &array) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rsa", &res, &lpUserId, &cbUserId, &array) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetQuota(cbUserId, lpUserId, false, &~lpQuota);
+@@ -4304,25 +4253,25 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszUsername, &ulUsername) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszUsername, &ulUsername) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveUserName((TCHAR*)lpszUsername, 0, (ULONG*)&cbUserId, &~lpUserId);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to resolve user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to resolve user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetUser(cbUserId, lpUserId, 0, &~lpUsers);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to get user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to get user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -4360,19 +4309,19 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetUser(cbUserId, lpUserId, 0, &~lpUsers);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to get user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to get user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -4404,20 +4353,20 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &sGroup.lpszGroupname, &cbGroupname) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &sGroup.lpszGroupname, &cbGroupname) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	sGroup.lpszFullname = sGroup.lpszGroupname;
+ 	MAPI_G(hr) = lpServiceAdmin->CreateGroup(&sGroup, 0, (ULONG*)&cbGroupId, &~lpGroupId);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to create group: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to create group: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -4443,19 +4392,19 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszGroupname, &cbGroupname) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszGroupname, &cbGroupname) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveGroupName((TCHAR*)lpszGroupname, 0, (ULONG*)&cbGroupId, &~lpGroupId);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Group not found: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Group not found: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -4484,14 +4433,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpGroupId, &cbGroupId, &lpUserId, &cbUserId) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpGroupId, &cbGroupId, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->AddGroupUser(cbGroupId, lpGroupId, cbUserId, lpUserId);
+@@ -4518,14 +4467,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpGroupId, &cbGroupId, &lpUserId, &cbUserId) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpGroupId, &cbGroupId, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->DeleteGroupUser(cbGroupId, lpGroupId, cbUserId, lpUserId);
+@@ -4554,14 +4503,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpGroupId, &cbGroupId, &lpszGroupname, &cbGroupname) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpGroupId, &cbGroupId, &lpszGroupname, &cbGroupname) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	sGroup.sGroupId.cb = cbGroupId;
+@@ -4592,14 +4541,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpGroupId, &cbGroupId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpGroupId, &cbGroupId) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetGroup(cbGroupId, lpGroupId, 0, &~lpsGroup);
+@@ -4630,19 +4579,19 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszGroupname, &ulGroupname) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszGroupname, &ulGroupname) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveGroupName((TCHAR*)lpszGroupname, 0, (ULONG*)&cbGroupId, &~lpGroupId);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to resolve group: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to resolve group: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -4675,14 +4624,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|s", &res, &lpCompanyId, &cbCompanyId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|s", &res, &lpCompanyId, &cbCompanyId) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetGroupList(cbCompanyId, lpCompanyId, 0, &ulGroups, &~lpsGroups);
+@@ -4720,14 +4669,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetGroupListOfUser(cbUserId, lpUserId, 0, &ulGroups, &~lpsGroups);
+@@ -4765,14 +4714,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpGroupId, &cbGroupId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpGroupId, &cbGroupId) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetUserListOfGroup(cbGroupId, lpGroupId, 0, &ulUsers, &~lpsUsers);
+@@ -4811,7 +4760,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &sCompany.lpszCompanyname, &cbCompanyname) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &sCompany.lpszCompanyname, &cbCompanyname) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -4819,12 +4768,12 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->CreateCompany(&sCompany, 0, (ULONG*)&cbCompanyId, &~lpCompanyId);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to create company: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to create company: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -4850,7 +4799,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszCompanyname, &cbCompanyname) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszCompanyname, &cbCompanyname) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -4858,12 +4807,12 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		 php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		 return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveCompanyName((TCHAR*)lpszCompanyname, 0, (ULONG*)&cbCompanyId, &~lpCompanyId);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Company not found: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Company not found: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -4892,7 +4841,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -4900,7 +4849,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetCompany(cbCompanyId, lpCompanyId, 0, &~lpsCompany);
+@@ -4931,7 +4880,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszCompanyname, &ulCompanyname) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszCompanyname, &ulCompanyname) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -4939,12 +4888,12 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveCompanyName((TCHAR*)lpszCompanyname, 0, (ULONG*)&cbCompanyId, &~lpCompanyId);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to resolve company: %s (%x)",
++		php_error_docref(NULL, E_WARNING, "Unable to resolve company: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		return;
+ 	}
+@@ -4974,7 +4923,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -4982,7 +4931,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpSecurity), &~lpSecurity);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpSecurity->GetCompanyList(0, &nCompanies, &~lpCompanies);
+@@ -5015,7 +4964,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpSetCompanyId, &cbSetCompanyId, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpSetCompanyId, &cbSetCompanyId, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -5023,7 +4972,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->AddCompanyToRemoteViewList(cbSetCompanyId, lpSetCompanyId, cbCompanyId, lpCompanyId);
+@@ -5049,7 +4998,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpSetCompanyId, &cbSetCompanyId, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpSetCompanyId, &cbSetCompanyId, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -5057,7 +5006,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->DelCompanyFromRemoteViewList(cbSetCompanyId, lpSetCompanyId, cbCompanyId, lpCompanyId);
+@@ -5085,7 +5034,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -5093,7 +5042,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetRemoteViewList(cbCompanyId, lpCompanyId, 0, &ulCompanies, &~lpsCompanies);
+@@ -5126,7 +5075,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpUserId, &cbUserId, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpUserId, &cbUserId, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -5134,7 +5083,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->AddUserToRemoteAdminList(cbUserId, lpUserId, cbCompanyId, lpCompanyId);
+@@ -5160,7 +5109,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpUserId, &cbUserId, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpUserId, &cbUserId, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -5168,7 +5117,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->DelUserFromRemoteAdminList(cbUserId, lpUserId, cbCompanyId, lpCompanyId);
+@@ -5196,7 +5145,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -5204,7 +5153,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetRemoteAdminList(cbCompanyId, lpCompanyId, 0, &ulUsers, &~lpsUsers);
+@@ -5238,7 +5187,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rssl", &res, &lpCompanyId, &cbCompanyId, &lpRecipientId, &cbRecipientId, &ulType) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rssl", &res, &lpCompanyId, &cbCompanyId, &lpRecipientId, &cbRecipientId, &ulType) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -5246,7 +5195,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 
+@@ -5274,7 +5223,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rssl", &res, &lpCompanyId, &cbCompanyId, &lpRecipientId, &cbRecipientId, &ulType) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rssl", &res, &lpCompanyId, &cbCompanyId, &lpRecipientId, &cbRecipientId, &ulType) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -5282,7 +5231,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->DeleteQuotaRecipient(cbCompanyId, lpCompanyId, cbRecipientId, lpRecipientId, ulType);
+@@ -5310,7 +5259,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpObjectId, &cbObjectId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpObjectId, &cbObjectId) == FAILURE)
+ 	return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+@@ -5318,7 +5267,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetQuotaRecipients(cbObjectId, lpObjectId, 0, &ulUsers, &~lpsUsers);
+@@ -5357,7 +5306,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &ulType) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &ulType) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5372,14 +5321,14 @@
+ 	} else if (type == le_mapi_msgstore) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid MAPI resource");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid MAPI resource");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+ 
+ 	MAPI_G(hr) = GetECObject(lpMapiProp, iid_of(lpSecurity), &~lpSecurity);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano object");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano object");
+ 		return;
+ 	}
+ 	MAPI_G(hr) = lpSecurity->GetPermissionRules(ulType, &cPerms, &~lpECPerms);
+@@ -5425,7 +5374,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &res, &perms) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &res, &perms) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() {
+ 		LOG_END();
+@@ -5443,14 +5392,14 @@
+ 	} else if (type == le_mapi_msgstore) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid MAPI resource");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid MAPI resource");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+ 
+ 	MAPI_G(hr) = GetECObject(lpMapiProp, iid_of(lpSecurity), &~lpSecurity);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano object");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano object");
+ 		return;
+ 	}
+ 	ZVAL_DEREF(perms);
+@@ -5524,7 +5473,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res_store) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res_store) == FAILURE)
+ 		return;
+ 	ZEND_FETCH_RESOURCE_C(store, LPMDB, &res_store, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+@@ -5554,7 +5503,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|r", &resSession, &resStore) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r|r", &resSession, &resStore) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5589,7 +5538,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resFBSupport) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resFBSupport) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5621,7 +5570,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &resFBSupport,&resUsers) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &resFBSupport,&resUsers) == FAILURE) return;
+ 
+ 	// do not release fbdata, it's registered in the return_value array, but not addref'd
+ 	auto laters = make_scope_success([&]() { MAPIFreeBuffer(lppFBData); LOG_END(); THROW_ON_ERROR(); });
+@@ -5696,7 +5645,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &resFBSupport,&resUsers) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &resFBSupport,&resUsers) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5767,7 +5716,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &resFBData, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &resFBData, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5796,7 +5745,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resFBData) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resFBData) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5823,7 +5772,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &resFBData, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &resFBData, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5845,7 +5794,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resEnumBlock) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resEnumBlock) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5873,7 +5822,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &resEnumBlock, &cElt) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &resEnumBlock, &cElt) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5910,7 +5859,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &resEnumBlock, &ulSkip) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &resEnumBlock, &ulSkip) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5938,7 +5887,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &resEnumBlock, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &resEnumBlock, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -5969,7 +5918,7 @@
+ 	char *uid_cstr = nullptr;
+ 	zval *res_addrbook = nullptr, *res_enumblock = nullptr;
+ 	time_t start = 0, end = 0;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrlllsss", &res_addrbook, &res_enumblock, &req_count, &start, &end, &organizer_cstr, &organizer_len, &user_cstr, &user_len, &uid_cstr, &uid_len) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrlllsss", &res_addrbook, &res_enumblock, &req_count, &start, &end, &organizer_cstr, &organizer_len, &user_cstr, &user_len, &uid_cstr, &uid_len) == FAILURE)
+ 		return;
+ 
+ 	IAddrBook *addrbook = nullptr;
+@@ -6028,7 +5977,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &resFBUpdate, &aBlocks) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &resFBUpdate, &aBlocks) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFBUpdate, IFreeBusyUpdate*, &resFBUpdate, -1, name_fb_update, le_freebusy_update);
+ 
+@@ -6088,7 +6037,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resFBUpdate) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resFBUpdate) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6117,7 +6066,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &resFBUpdate, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &resFBUpdate, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6161,7 +6110,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrlzzzzl", &resExportChanges, &resStream, &ulFlags, &resImportChanges, &aRestrict, &aIncludeProps, &aExcludeProps, &ulBuffersize) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rrlzzzzl", &resExportChanges, &resStream, &ulFlags, &resImportChanges, &aRestrict, &aIncludeProps, &aExcludeProps, &ulBuffersize) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6175,14 +6124,14 @@
+ 		} else if(type == le_mapi_importhierarchychanges) {
+ 			ZEND_FETCH_RESOURCE_C(lpImportChanges, IUnknown *, &resImportChanges, -1, name_mapi_importhierarchychanges, le_mapi_importhierarchychanges);
+ 		} else {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "The importer must be either a contents importer or a hierarchy importer object");
++			php_error_docref(NULL, E_WARNING, "The importer must be either a contents importer or a hierarchy importer object");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			return;
+ 		}
+ 	} else if(Z_TYPE_P(resImportChanges) == IS_FALSE) {
+ 		lpImportChanges = NULL;
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The importer must be an actual importer resource, or FALSE");
++		php_error_docref(NULL, E_WARNING, "The importer must be an actual importer resource, or FALSE");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+@@ -6194,23 +6143,23 @@
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return;
+ 
+-		MAPI_G(hr) = PHPArraytoSRestriction(aRestrict, lpRestrict, lpRestrict TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(aRestrict, lpRestrict, lpRestrict);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return;
+ 	}
+ 
+ 	if(Z_TYPE_P(aIncludeProps) == IS_ARRAY) {
+-		MAPI_G(hr) = PHPArraytoPropTagArray(aIncludeProps, NULL, &~lpIncludeProps TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropTagArray(aIncludeProps, NULL, &~lpIncludeProps);
+ 		if(MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse includeprops array");
++			php_error_docref(NULL, E_WARNING, "Unable to parse includeprops array");
+ 			return;
+ 		}
+ 	}
+ 
+ 	if(Z_TYPE_P(aExcludeProps) == IS_ARRAY) {
+-		MAPI_G(hr) = PHPArraytoPropTagArray(aExcludeProps, NULL, &~lpExcludeProps TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropTagArray(aExcludeProps, NULL, &~lpExcludeProps);
+ 		if(MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse excludeprops array");
++			php_error_docref(NULL, E_WARNING, "Unable to parse excludeprops array");
+ 			return;
+ 		}
+ 	}
+@@ -6234,7 +6183,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resExportChanges) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resExportChanges) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6266,7 +6215,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr", &resExportChanges, &resStream) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "rr", &resExportChanges, &resStream) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6293,7 +6242,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resExportChanges) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resExportChanges) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6301,7 +6250,7 @@
+ 
+ 	MAPI_G(hr) = lpExportChanges->QueryInterface(IID_IECExportChanges, &~lpECExportChanges);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "ExportChanges does not support IECExportChanges interface which is required for the getchangecount call");
++		php_error_docref(NULL, E_WARNING, "ExportChanges does not support IECExportChanges interface which is required for the getchangecount call");
+ 		return;
+ 	}
+ 
+@@ -6325,7 +6274,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrl", &resImportContentsChanges, &resStream, &ulFlags) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rrl", &resImportContentsChanges, &resStream, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6352,7 +6301,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|r", &resImportContentsChanges, &resStream) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "r|r", &resImportContentsChanges, &resStream) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6385,15 +6334,15 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ralz", &resImportContentsChanges, &resProps, &ulFlags, &resMessage) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "ralz", &resImportContentsChanges, &resProps, &ulFlags, &resMessage) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+     ZEND_FETCH_RESOURCE_C(lpImportContentsChanges, IExchangeImportContentsChanges *, &resImportContentsChanges, -1, name_mapi_importcontentschanges, le_mapi_importcontentschanges);
+ 
+-	MAPI_G(hr) = PHPArraytoPropValueArray(resProps, NULL, &cValues, &~lpProps TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropValueArray(resProps, NULL, &cValues, &~lpProps);
+     if(MAPI_G(hr) != hrSuccess) {
+-    	php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse property array");
++    	php_error_docref(NULL, E_WARNING, "Unable to parse property array");
+ 		return;
+ 	}
+ 
+@@ -6418,15 +6367,15 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rla", &resImportContentsChanges, &ulFlags, &resMessages) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rla", &resImportContentsChanges, &ulFlags, &resMessages) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpImportContentsChanges, IExchangeImportContentsChanges *, &resImportContentsChanges, -1, name_mapi_importcontentschanges, le_mapi_importcontentschanges);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(resMessages, NULL, &~lpMessages TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(resMessages, NULL, &~lpMessages);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse message list");
++		php_error_docref(NULL, E_WARNING, "Unable to parse message list");
+ 		return;
+ 	}
+ 
+@@ -6448,15 +6397,15 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &resImportContentsChanges, &resReadStates) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &resImportContentsChanges, &resReadStates) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpImportContentsChanges, IExchangeImportContentsChanges *, &resImportContentsChanges, -1, name_mapi_importcontentschanges, le_mapi_importcontentschanges);
+ 
+-	MAPI_G(hr) = PHPArraytoReadStateArray(resReadStates, NULL, &cValues, &~lpReadStates TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoReadStateArray(resReadStates, NULL, &cValues, &~lpReadStates);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse readstates");
++		php_error_docref(NULL, E_WARNING, "Unable to parse readstates");
+ 		return;
+ 	}
+ 
+@@ -6488,7 +6437,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsssss", 	&resImportContentsChanges,
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rsssss", 	&resImportContentsChanges,
+ 																	&pbSourceKeySrcFolder, &cbSourceKeySrcFolder,
+ 																	&pbSourceKeySrcMessage, &cbSourceKeySrcMessage,
+ 																	&pbPCLMessage, &cbPCLMessage,
+@@ -6517,7 +6466,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrl", &resImportHierarchyChanges, &resStream, &ulFlags) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rrl", &resImportHierarchyChanges, &resStream, &ulFlags) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6543,7 +6492,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|r", &resImportHierarchyChanges, &resStream) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "r|r", &resImportHierarchyChanges, &resStream) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6573,15 +6522,15 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &resImportHierarchyChanges, &resProps) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &resImportHierarchyChanges, &resProps) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpImportHierarchyChanges, IExchangeImportHierarchyChanges *, &resImportHierarchyChanges, -1, name_mapi_importhierarchychanges, le_mapi_importhierarchychanges);
+ 
+-	MAPI_G(hr) = PHPArraytoPropValueArray(resProps, NULL, &cValues, &~lpProps TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropValueArray(resProps, NULL, &cValues, &~lpProps);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert properties in properties array");
++		php_error_docref(NULL, E_WARNING, "Unable to convert properties in properties array");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+@@ -6605,15 +6554,15 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rla", &resImportHierarchyChanges, &ulFlags, &resFolders) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rla", &resImportHierarchyChanges, &ulFlags, &resFolders) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpImportHierarchyChanges, IExchangeImportHierarchyChanges *, &resImportHierarchyChanges, -1, name_mapi_importhierarchychanges, le_mapi_importhierarchychanges);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(resFolders, NULL, &~lpFolders TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(resFolders, NULL, &~lpFolders);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse folder list");
++		php_error_docref(NULL, E_WARNING, "Unable to parse folder list");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return;
+ 	}
+@@ -6649,9 +6598,9 @@
+     RETVAL_FALSE;
+     MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &objImportContentsChanges) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "o", &objImportContentsChanges) == FAILURE) return;
+ 
+-    lpImportContentsChanges = new ECImportContentsChangesProxy(objImportContentsChanges TSRMLS_CC);
++    lpImportContentsChanges = new ECImportContentsChangesProxy(objImportContentsChanges);
+ 
+     // Simply return the wrapped object
+ 	ZEND_REGISTER_RESOURCE(return_value, lpImportContentsChanges, le_mapi_importcontentschanges);
+@@ -6672,9 +6621,9 @@
+     RETVAL_FALSE;
+     MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &objImportHierarchyChanges) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "o", &objImportHierarchyChanges) == FAILURE) return;
+ 
+-    lpImportHierarchyChanges = new ECImportHierarchyChangesProxy(objImportHierarchyChanges TSRMLS_CC);
++    lpImportHierarchyChanges = new ECImportHierarchyChangesProxy(objImportHierarchyChanges);
+ 
+     // Simply return the wrapped object
+ 	ZEND_REGISTER_RESOURCE(return_value, lpImportHierarchyChanges, le_mapi_importhierarchychanges);
+@@ -6707,7 +6656,7 @@
+     RETVAL_FALSE;
+     MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+     
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrra", &resSession, &resAddrBook, &resMessage, &resOptions) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "rrra", &resSession, &resAddrBook, &resMessage, &resOptions) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6756,7 +6705,7 @@
+     RETVAL_FALSE;
+     MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+     
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrrrsa", &resSession, &resStore, &resAddrBook, &resMessage, &szString, &cbString, &resOptions) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "rrrrsa", &resSession, &resStore, &resAddrBook, &resMessage, &szString, &cbString, &resOptions) == FAILURE) return;
+ 
+ 	auto laters = make_scope_success([&]() { LOG_END(); THROW_ON_ERROR(); });
+ 
+@@ -6798,7 +6747,7 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrrrsb",
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrrrsb",
+ 	    &resSession, &resStore, &resAddrBook, &resMessage, &szString,
+ 	    &cbString, &noRecipients) == FAILURE)
+ 		return;
+@@ -6868,7 +6817,7 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrra",
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrra",
+ 	    &resSession, &resAddrBook, &resMessage, &resOptions) == FAILURE)
+ 		return;
+ 
+@@ -6903,7 +6852,7 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrrs",
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrrs",
+ 	    &resSession, &resStore, &resMessage, &szString,
+ 	    &cbString) == FAILURE)
+ 		return;
+@@ -6948,7 +6897,7 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrra",
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrra",
+ 	    &resSession, &resAddrBook, &resMessage, &resOptions) == FAILURE)
+ 		return;
+ 
+@@ -6980,7 +6929,7 @@
+ 
+ 	RETVAL_FALSE;
+ 	
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &str_class) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "S", &str_class) == FAILURE) return;
+     
+     if ((ce = *(zend_class_entry **)zend_hash_find(CG(class_table), str_class)) != NULL) {
+         MAPI_G(exceptions_enabled) = true;
+@@ -7003,7 +6952,7 @@
+     
+     RETVAL_FALSE;
+     
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &szFeature, &cbFeature) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "s", &szFeature, &cbFeature) == FAILURE) return;
+ 	for (size_t i = 0; i < ARRAY_SIZE(features); ++i)
+         if(strcasecmp(features[i], szFeature) == 0) {
+             RETVAL_TRUE;
+@@ -7017,7 +6966,7 @@
+ 	PMEASURE_FUNC;
+ 	zval *res = nullptr, *outstr = nullptr;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz", &res, &outstr) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rz", &res, &outstr) == FAILURE)
+ 		return;
+ 	IMAPISession *ses;
+ 	ZEND_FETCH_RESOURCE_C(ses, IMAPISession *, &res, -1, name_mapi_session, le_mapi_session);
+@@ -7036,10 +6985,10 @@
+ 	PMEASURE_FUNC;
+ 	zval *data, *res;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &data, &res) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "zz", &data, &res) == FAILURE)
+ 		return;
+ 	if (Z_TYPE_P(data) != IS_STRING) {
+-		php_error_docref(NULL TSRMLS_CC, E_ERROR, "kc_session_restore() expects parameter 1 to be string, but something else was given");
++		php_error_docref(NULL, E_ERROR, "kc_session_restore() expects parameter 1 to be string, but something else was given");
+ 		RETVAL_LONG(MAPI_G(hr) = MAPI_E_INVALID_PARAMETER);
+ 		LOG_END();
+ 		return;
+@@ -7065,12 +7014,12 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|s", &res, &eid, &eid_size) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|s", &res, &eid, &eid_size) == FAILURE)
+ 		return;
+ 	ZEND_FETCH_RESOURCE_C(store, IMsgStore *, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = store->AbortSubmit(eid_size, eid, 0);
+ 	if (FAILED(MAPI_G(hr)))
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to abort submit: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
++		php_error_docref(nullptr, E_WARNING, "Unable to abort submit: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 	else
+ 		RETVAL_TRUE;
+ 	LOG_END();
+--- a/php7-ext/typeconversion.cpp
++++ b/php7-ext/typeconversion.cpp
+@@ -69,7 +69,7 @@
+ * is used with DeleteMessages();
+ *
+ */
+-HRESULT PHPArraytoSBinaryArray(zval * entryid_array , void *lpBase, SBinaryArray *lpBinaryArray TSRMLS_DC)
++HRESULT PHPArraytoSBinaryArray(zval * entryid_array , void *lpBase, SBinaryArray *lpBinaryArray)
+ {
+ 	// local
+ 	HashTable		*target_hash = NULL;
+@@ -80,7 +80,7 @@
+ 
+ 	target_hash = HASH_OF(entryid_array);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoSBinaryArray");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoSBinaryArray");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(Z_ARRVAL_P(entryid_array));
+@@ -108,14 +108,14 @@
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT PHPArraytoSBinaryArray(zval * entryid_array , void *lpBase, SBinaryArray **lppBinaryArray TSRMLS_DC)
++HRESULT PHPArraytoSBinaryArray(zval * entryid_array , void *lpBase, SBinaryArray **lppBinaryArray)
+ {
+ 	SBinaryArray *lpBinaryArray = NULL;
+ 	
+ 	MAPI_G(hr) = MAPI_ALLOC(sizeof(SBinaryArray), lpBase, (void **)&lpBinaryArray);
+ 	if(MAPI_G(hr) != hrSuccess)
+ 		return MAPI_G(hr);
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, lpBase ? lpBase : lpBinaryArray, lpBinaryArray TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, lpBase ? lpBase : lpBinaryArray, lpBinaryArray);
+ 	if(MAPI_G(hr) != hrSuccess) {
+ 		MAPI_FREE(lpBase, lpBinaryArray);
+ 		return MAPI_G(hr);
+@@ -126,7 +126,7 @@
+ }
+ 
+ HRESULT SBinaryArraytoPHPArray(const SBinaryArray *lpBinaryArray,
+-    zval *pvalRet TSRMLS_DC)
++    zval *pvalRet)
+ {
+ 	unsigned int i = 0;
+ 	
+@@ -153,7 +153,7 @@
+ *
+ * NOTE: The TABLE_SORT_COMBINE is not (yet) implemented, it should work but is not tested
+ */
+-HRESULT PHPArraytoSortOrderSet(zval * sortorder_array, void *lpBase, LPSSortOrderSet *lppSortOrderSet TSRMLS_DC)
++HRESULT PHPArraytoSortOrderSet(zval * sortorder_array, void *lpBase, LPSSortOrderSet *lppSortOrderSet)
+ {
+ 	// local
+ 	LPSSortOrderSet lpSortOrderSet = NULL;
+@@ -164,7 +164,7 @@
+ 
+ 	target_hash = HASH_OF(sortorder_array);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoSortOrderSet");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoSortOrderSet");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(Z_ARRVAL_P(sortorder_array));
+@@ -197,7 +197,7 @@
+ * The caller is responsible to free the memory using MAPIFreeBuffer
+ */
+ 
+-HRESULT PHPArraytoPropTagArray(zval * prop_value_array, void *lpBase, LPSPropTagArray *lppPropTagArray TSRMLS_DC)
++HRESULT PHPArraytoPropTagArray(zval * prop_value_array, void *lpBase, LPSPropTagArray *lppPropTagArray)
+ {
+ 	// return value
+ 	LPSPropTagArray lpPropTagArray = NULL;
+@@ -208,7 +208,7 @@
+ 
+ 	target_hash = HASH_OF(prop_value_array);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoPropTagArray");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoPropTagArray");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(target_hash);
+@@ -231,7 +231,7 @@
+ /*
+ * Converts a PHP property value array to a MAPI property value structure
+ */
+-HRESULT PHPArraytoPropValueArray(zval* phpArray, void *lpBase, ULONG *lpcValues, LPSPropValue *lppPropValArray TSRMLS_DC)
++HRESULT PHPArraytoPropValueArray(zval* phpArray, void *lpBase, ULONG *lpcValues, LPSPropValue *lppPropValArray)
+ {
+ 	// return value
+ 	LPSPropValue	lpPropValue	= NULL;
+@@ -260,13 +260,13 @@
+ 	zstrplus str_proptag(zend_string_init("proptag", sizeof("proptag") - 1, 0));
+ 
+ 	if (!phpArray) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No phpArray in PHPArraytoPropValueArray");
++		php_error_docref(NULL, E_WARNING, "No phpArray in PHPArraytoPropValueArray");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+ 	target_hash = HASH_OF(phpArray);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoPropValueArray");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoPropValueArray");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(target_hash);
+@@ -285,7 +285,7 @@
+ 	unsigned int i = 0;
+ 	ZEND_HASH_FOREACH_KEY_VAL(target_hash, numIndex, keyIndex, entry) {
+ 		if (keyIndex != nullptr) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "PHPArraytoPropValueArray: expected array to be int-keyed");
++			php_error_docref(nullptr, E_WARNING, "PHPArraytoPropValueArray: expected array to be int-keyed");
+ 			++i;
+ 			continue;
+ 		}
+@@ -346,7 +346,7 @@
+ 		case PT_CLSID:
+ 			convert_to_string_ex(entry);
+ 			if (entry->value.str->len != sizeof(GUID)) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "GUID must be 16 bytes");
++				php_error_docref(NULL, E_WARNING, "GUID must be 16 bytes");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			MAPI_G(hr) = KAllocCopy(entry->value.str->val, sizeof(GUID), reinterpret_cast<void **>(&lpPropValue[cvalues].Value.lpguid), lpBase != nullptr ? lpBase : lpPropValue);
+@@ -359,7 +359,7 @@
+ 	{ \
+ 		dataHash = HASH_OF(entry); \
+ 		if (!dataHash) { \
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "No MV dataHash"); \
++			php_error_docref(NULL, E_WARNING, "No MV dataHash"); \
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER; \
+ 		} \
+ 	}
+@@ -467,7 +467,7 @@
+ 				convert_to_string_ex(dataEntry);
+ 				++j;
+ 				if (dataEntry->value.str->len != sizeof(GUID))
+-					php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for PT_MV_CLSID property in proptag 0x%08X, position %d,%d", lpPropValue[cvalues].ulPropTag, i, j);
++					php_error_docref(NULL, E_WARNING, "invalid value for PT_MV_CLSID property in proptag 0x%08X, position %d,%d", lpPropValue[cvalues].ulPropTag, i, j);
+ 				else
+ 					memcpy(&lpPropValue[cvalues].Value.MVguid.lpguid[h++], dataEntry->value.str->val, sizeof(GUID));
+ 			} ZEND_HASH_FOREACH_END();
+@@ -475,10 +475,10 @@
+ 			break;
+ 
+ 		case PT_MV_I8:
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "PT_MV_I8 not supported");
++			php_error_docref(NULL, E_WARNING, "PT_MV_I8 not supported");
+ 			return MAPI_G(hr) = MAPI_E_NO_SUPPORT;
+ 		case PT_MV_CURRENCY:
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "PT_MV_CURRENCY not supported");
++			php_error_docref(NULL, E_WARNING, "PT_MV_CURRENCY not supported");
+ 			return MAPI_G(hr) = MAPI_E_NO_SUPPORT;
+ 		case PT_ACTIONS:
+ 			dataHash = HASH_OF(entry);
+@@ -486,7 +486,7 @@
+ 				break;
+ 			countarray = zend_hash_num_elements(dataHash); // # of actions
+ 			if (countarray == 0) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "PT_ACTIONS is empty");
++				php_error_docref(NULL, E_WARNING, "PT_ACTIONS is empty");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			if ((MAPI_G(hr) = MAPIAllocateMore(sizeof(ACTIONS), lpBase ? lpBase : lpPropValue, (void **)&lpPropValue[cvalues].Value.lpszA)) != hrSuccess)
+@@ -504,12 +504,12 @@
+ 				ZVAL_DEREF(entry);
+ 				actionHash = HASH_OF(entry);
+ 				if (!actionHash) {
+-					php_error_docref(NULL TSRMLS_CC, E_WARNING, "ACTIONS structure has a wrong ACTION");
++					php_error_docref(NULL, E_WARNING, "ACTIONS structure has a wrong ACTION");
+ 					return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 				}
+ 				dataEntry = zend_hash_find(actionHash, str_action.get());
+ 				if (dataEntry == nullptr) {
+-					php_error_docref(NULL TSRMLS_CC, E_WARNING, "PT_ACTIONS type has no action type in array");
++					php_error_docref(NULL, E_WARNING, "PT_ACTIONS type has no action type in array");
+ 					return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 				}
+ 
+@@ -538,7 +538,7 @@
+ 				case OP_COPY:
+ 					dataEntry = zend_hash_find(actionHash, str_storeentryid.get());
+ 					if (dataEntry == nullptr) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_COPY/OP_MOVE but no storeentryid entry");
++						php_error_docref(NULL, E_WARNING, "OP_COPY/OP_MOVE but no storeentryid entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 
+@@ -550,7 +550,7 @@
+ 						return MAPI_G(hr);
+ 					dataEntry = zend_hash_find(actionHash, str_folderentryid.get());
+ 					if (dataEntry == nullptr) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_COPY/OP_MOVE but no folderentryid entry");
++						php_error_docref(NULL, E_WARNING, "OP_COPY/OP_MOVE but no folderentryid entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					SEPARATE_ZVAL(dataEntry);
+@@ -565,7 +565,7 @@
+ 				case OP_OOF_REPLY:
+ 					dataEntry = zend_hash_find(actionHash, str_replyentryid.get());
+ 					if (dataEntry == nullptr) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_REPLY but no replyentryid entry");
++						php_error_docref(NULL, E_WARNING, "OP_REPLY but no replyentryid entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					SEPARATE_ZVAL(dataEntry);
+@@ -581,7 +581,7 @@
+ 						SEPARATE_ZVAL(dataEntry);
+ 						convert_to_string_ex(dataEntry);
+ 						if (dataEntry->value.str->len != sizeof(GUID)) {
+-							php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_REPLY replyguid not sizeof(GUID)");
++							php_error_docref(NULL, E_WARNING, "OP_REPLY replyguid not sizeof(GUID)");
+ 							return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 						} else {
+ 							memcpy(&lpActions->lpAction[j].actReply.guidReplyTemplate, dataEntry->value.str->val, sizeof(GUID));
+@@ -592,7 +592,7 @@
+ 				case OP_DEFER_ACTION:
+ 					dataEntry = zend_hash_find(actionHash, str_dam.get());
+ 					if (dataEntry == nullptr) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_DEFER_ACTION but no dam entry");
++						php_error_docref(NULL, E_WARNING, "OP_DEFER_ACTION but no dam entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					SEPARATE_ZVAL(dataEntry);
+@@ -606,7 +606,7 @@
+ 				case OP_BOUNCE:
+ 					dataEntry = zend_hash_find(actionHash, str_code.get());
+ 					if (dataEntry == nullptr) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_BOUNCE but no code entry");
++						php_error_docref(NULL, E_WARNING, "OP_BOUNCE but no code entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					SEPARATE_ZVAL(dataEntry);
+@@ -617,32 +617,32 @@
+ 				case OP_DELEGATE:
+ 					dataEntry = zend_hash_find(actionHash, str_adrlist.get());
+ 					if (dataEntry == nullptr) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_FORWARD/OP_DELEGATE but no adrlist entry");
++						php_error_docref(NULL, E_WARNING, "OP_FORWARD/OP_DELEGATE but no adrlist entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					if (Z_TYPE_P(dataEntry) != IS_ARRAY) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_FORWARD/OP_DELEGATE adrlist entry must be an array");
++						php_error_docref(NULL, E_WARNING, "OP_FORWARD/OP_DELEGATE adrlist entry must be an array");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+-					MAPI_G(hr) = PHPArraytoAdrList(dataEntry, lpBase ? lpBase : lpPropValue, &lpActions->lpAction[j].lpadrlist TSRMLS_CC);
++					MAPI_G(hr) = PHPArraytoAdrList(dataEntry, lpBase ? lpBase : lpPropValue, &lpActions->lpAction[j].lpadrlist);
+ 					if (MAPI_G(hr) != hrSuccess)
+ 						return MAPI_G(hr);
+ 					if (MAPI_G(hr) != hrSuccess){
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_DELEGATE/OP_FORWARD wrong data in adrlist entry");
++						php_error_docref(NULL, E_WARNING, "OP_DELEGATE/OP_FORWARD wrong data in adrlist entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					break;
+ 				case OP_TAG:
+ 					dataEntry = zend_hash_find(actionHash, str_proptag.get());
+ 					if (dataEntry == nullptr) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_TAG but no proptag entry");
++						php_error_docref(NULL, E_WARNING, "OP_TAG but no proptag entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+-					MAPI_G(hr) = PHPArraytoPropValueArray(dataEntry, lpBase ? lpBase : lpPropValue, &ulCountTmp, &lpPropTmp TSRMLS_CC);
++					MAPI_G(hr) = PHPArraytoPropValueArray(dataEntry, lpBase ? lpBase : lpPropValue, &ulCountTmp, &lpPropTmp);
+ 					if (MAPI_G(hr) != hrSuccess)
+ 						return MAPI_G(hr);
+ 					if (ulCountTmp > 1)
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_TAG has 'proptag' member which contains more than one property. Using the first in the array.");
++						php_error_docref(NULL, E_WARNING, "OP_TAG has 'proptag' member which contains more than one property. Using the first in the array.");
+ 					lpActions->lpAction[j].propTag = *lpPropTmp;
+ 					break;
+ 				case OP_DELETE:
+@@ -656,9 +656,9 @@
+ 			break;
+ 
+ 		case PT_SRESTRICTION:
+-			MAPI_G(hr) = PHPArraytoSRestriction(entry, lpBase ? lpBase : lpPropValue, &lpRestriction TSRMLS_CC);
++			MAPI_G(hr) = PHPArraytoSRestriction(entry, lpBase ? lpBase : lpPropValue, &lpRestriction);
+ 			if (MAPI_G(hr) != hrSuccess) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHPArray to SRestriction failed");
++				php_error_docref(NULL, E_WARNING, "PHPArray to SRestriction failed");
+ 				return MAPI_G(hr);
+ 			}
+ 			lpPropValue[cvalues++].Value.lpszA = (char *)lpRestriction;
+@@ -669,7 +669,7 @@
+ 			lpPropValue[cvalues].Value.err = entry->value.lval;
+ 			break;
+ 		default:
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown property type %08X", PROP_TYPE(numIndex));
++			php_error_docref(NULL, E_WARNING, "Unknown property type %08X", PROP_TYPE(numIndex));
+ 			return MAPI_G(hr) = MAPI_E_INVALID_TYPE;
+ 		}
+ 		++i;
+@@ -680,7 +680,7 @@
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT PHPArraytoAdrList(zval *phpArray, void *lpBase, LPADRLIST *lppAdrList TSRMLS_DC) 
++HRESULT PHPArraytoAdrList(zval *phpArray, void *lpBase, LPADRLIST *lppAdrList) 
+ {
+ 	HashTable		*target_hash = NULL;
+ 	ULONG			countProperties = 0;		// number of properties
+@@ -692,18 +692,18 @@
+ 	MAPI_G(hr) = hrSuccess;
+ 
+ 	if (!phpArray) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No phpArray in PHPArraytoAdrList");
++		php_error_docref(NULL, E_WARNING, "No phpArray in PHPArraytoAdrList");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+ 	target_hash = HASH_OF(phpArray);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "phparraytoadrlist wrong data, unknown error");
++		php_error_docref(NULL, E_WARNING, "phparraytoadrlist wrong data, unknown error");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+ 	if(Z_TYPE_P(phpArray) != IS_ARRAY) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "phparray to adrlist must include an array");
++		php_error_docref(NULL, E_WARNING, "phparray to adrlist must include an array");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+@@ -722,12 +722,12 @@
+ 		ZVAL_DEREF(entry);
+ 
+ 		if(Z_TYPE_P(entry) != IS_ARRAY) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "phparraytoadrlist array must include an array with array of propvalues");
++			php_error_docref(NULL, E_WARNING, "phparraytoadrlist array must include an array with array of propvalues");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+ 
+-		MAPI_G(hr) = PHPArraytoPropValueArray(entry, lpBase, &countProperties, &pPropValue TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropValueArray(entry, lpBase, &countProperties, &pPropValue);
+ 		if(MAPI_G(hr) != hrSuccess)
+ 			goto exit;
+ 		++lpAdrList->cEntries;
+@@ -744,7 +744,7 @@
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT PHPArraytoRowList(zval *phpArray, void *lpBase, LPROWLIST *lppRowList TSRMLS_DC) {
++HRESULT PHPArraytoRowList(zval *phpArray, void *lpBase, LPROWLIST *lppRowList) {
+ 	HashTable		*target_hash = NULL;
+ 	ULONG			countProperties = 0;		// number of properties
+ 	ULONG			countRows = 0;		// number of actual recipients
+@@ -757,13 +757,13 @@
+ 
+ 	MAPI_G(hr) = hrSuccess;
+ 	if (!phpArray || Z_TYPE_P(phpArray) != IS_ARRAY) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No phpArray in PHPArraytoRowList");
++		php_error_docref(NULL, E_WARNING, "No phpArray in PHPArraytoRowList");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+ 	target_hash = HASH_OF(phpArray);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoRowList");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoRowList");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(target_hash);
+@@ -779,17 +779,17 @@
+ 		ZVAL_DEREF(entry);
+ 
+ 		if (Z_TYPE_P(entry) != IS_ARRAY) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHPArraytoRowList, Row not wrapped in array");
++			php_error_docref(NULL, E_WARNING, "PHPArraytoRowList, Row not wrapped in array");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 
+ 		data = zend_hash_find(HASH_OF(entry), str_properties.get());
+ 		if (data != nullptr) {
+-			MAPI_G(hr) = PHPArraytoPropValueArray(data, NULL, &countProperties, &pPropValue TSRMLS_CC);
++			MAPI_G(hr) = PHPArraytoPropValueArray(data, NULL, &countProperties, &pPropValue);
+ 			if(MAPI_G(hr) != hrSuccess)
+ 				return MAPI_G(hr);
+ 		}else {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHPArraytoRowList, Missing field properties");
++			php_error_docref(NULL, E_WARNING, "PHPArraytoRowList, Missing field properties");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 
+@@ -798,14 +798,14 @@
+ 			if (data != nullptr) {
+ 				lpRowList->aEntries[countRows].ulRowFlags = Z_LVAL_P(data);
+ 			} else {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHPArraytoRowList, Missing field rowflags");
++				php_error_docref(NULL, E_WARNING, "PHPArraytoRowList, Missing field rowflags");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			++lpRowList->cEntries;
+ 			lpRowList->aEntries[countRows].rgPropVals = pPropValue;
+ 			lpRowList->aEntries[countRows++].cValues = countProperties;
+ 		}else {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHPArraytoRowList, critical error");
++			php_error_docref(NULL, E_WARNING, "PHPArraytoRowList, critical error");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 	} ZEND_HASH_FOREACH_END();
+@@ -880,7 +880,7 @@
+ * TODO: combine code from here and from PHPArraytoPropValueArray in a pval/zval to Proptag function (?)
+ */
+ 
+-HRESULT PHPArraytoSRestriction(zval *phpVal, void* lpBase, LPSRestriction lpRes TSRMLS_DC)
++HRESULT PHPArraytoSRestriction(zval *phpVal, void* lpBase, LPSRestriction lpRes)
+ {
+ 	HashTable *resHash	= NULL;
+ 	HashTable *dataHash = NULL;
+@@ -889,14 +889,14 @@
+ 	ULONG cValues = 0;
+ 
+ 	if (!phpVal || lpRes == NULL) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "critical error");
++		php_error_docref(NULL, E_WARNING, "critical error");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+ 	ZVAL_DEREF(phpVal);
+ 	resHash = HASH_OF(phpVal);
+ 	if (!resHash || zend_hash_num_elements(resHash) != 2) {		// should always be array(RES_ , array(values))
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Wrong array should be array(RES_, array(values))");
++		php_error_docref(NULL, E_WARNING, "Wrong array should be array(RES_, array(values))");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	HashPosition hpos;
+@@ -905,13 +905,13 @@
+ 	// structure assumption: add more checks that valueEntry becomes php array pointer?
+ 	typeEntry = zend_hash_get_current_data_ex(resHash, &hpos); // 0=type, 1=array
+ 	if (typeEntry == nullptr) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Wrong array should be array(RES_, array(values))");
++		php_error_docref(nullptr, E_WARNING, "Wrong array should be array(RES_, array(values))");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	zend_hash_move_forward_ex(resHash, &hpos);
+ 	valueEntry = zend_hash_get_current_data_ex(resHash, &hpos);
+ 	if (valueEntry == nullptr) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Wrong array should be array(RES_, array(values))");
++		php_error_docref(nullptr, E_WARNING, "Wrong array should be array(RES_, array(values))");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+@@ -919,7 +919,7 @@
+ 	ZVAL_DEREF(valueEntry);
+ 	dataHash = HASH_OF(valueEntry);			// from resHash
+ 	if (!dataHash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "critical error, wrong array");
++		php_error_docref(NULL, E_WARNING, "critical error, wrong array");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(dataHash);
+@@ -937,7 +937,7 @@
+ 			return MAPI_G(hr);
+ 		i = 0;
+ 		ZEND_HASH_FOREACH_VAL(dataHash, valueEntry) {
+-			MAPI_G(hr) = PHPArraytoSRestriction(valueEntry, lpBase, &lpRes->res.resAnd.lpRes[i++] TSRMLS_CC);
++			MAPI_G(hr) = PHPArraytoSRestriction(valueEntry, lpBase, &lpRes->res.resAnd.lpRes[i++]);
+ 			if (MAPI_G(hr) != hrSuccess)
+ 				return MAPI_G(hr);
+ 		} ZEND_HASH_FOREACH_END();
+@@ -950,7 +950,7 @@
+ 			return MAPI_G(hr);
+ 		i = 0;
+ 		ZEND_HASH_FOREACH_VAL(dataHash, valueEntry) {
+-			MAPI_G(hr) = PHPArraytoSRestriction(valueEntry, lpBase, &lpRes->res.resOr.lpRes[i++] TSRMLS_CC);
++			MAPI_G(hr) = PHPArraytoSRestriction(valueEntry, lpBase, &lpRes->res.resOr.lpRes[i++]);
+ 			if (MAPI_G(hr) != hrSuccess)
+ 				return MAPI_G(hr);
+ 		} ZEND_HASH_FOREACH_END();
+@@ -965,24 +965,24 @@
+ 		valueEntry = zend_hash_get_current_data_ex(dataHash, &hpos);
+ 		if (valueEntry == nullptr)
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry, lpBase, lpRes->res.resNot.lpRes TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry, lpBase, lpRes->res.resNot.lpRes);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		break;
+ 	}
+ 	case RES_SUBRESTRICTION:
+ 		if ((valueEntry = zend_hash_index_find(dataHash, RESTRICTION)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_SUBRESTRICTION, Missing field RESTRICTION");
++			php_error_docref(NULL, E_WARNING, "RES_SUBRESTRICTION, Missing field RESTRICTION");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 
+-		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry, lpBase, &lpRes->res.resSub.lpRes TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry, lpBase, &lpRes->res.resSub.lpRes);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 
+ 		// ULPROPTAG as resSubObject
+ 		if ((valueEntry = zend_hash_index_find(dataHash, ULPROPTAG)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_SUBRESTRICTION, Missing field ULPROPTAG");
++			php_error_docref(NULL, E_WARNING, "RES_SUBRESTRICTION, Missing field ULPROPTAG");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		lpRes->res.resSub.ulSubObject = valueEntry->value.lval;
+@@ -990,24 +990,24 @@
+ 		break;
+ 	case RES_COMMENT:
+ 		if ((valueEntry = zend_hash_index_find(dataHash, RESTRICTION)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMMENT, Missing field RESTRICTION");
++			php_error_docref(NULL, E_WARNING, "RES_COMMENT, Missing field RESTRICTION");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 
+-		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry, lpBase, &lpRes->res.resComment.lpRes TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry, lpBase, &lpRes->res.resComment.lpRes);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMMENT, Wrong data in field RESTRICTION");
++			php_error_docref(NULL, E_WARNING, "RES_COMMENT, Wrong data in field RESTRICTION");
+ 			return MAPI_G(hr);
+ 		}
+ 
+ 		if ((valueEntry = zend_hash_index_find(dataHash, PROPS)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMMENT, Missing field PROPS");
++			php_error_docref(NULL, E_WARNING, "RES_COMMENT, Missing field PROPS");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 
+-		MAPI_G(hr) = PHPArraytoPropValueArray(valueEntry, lpBase, &lpRes->res.resComment.cValues, &lpRes->res.resComment.lpProp TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropValueArray(valueEntry, lpBase, &lpRes->res.resComment.cValues, &lpRes->res.resComment.lpProp);
+ 		if(MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMMENT, Wrong data in field PROPS");
++			php_error_docref(NULL, E_WARNING, "RES_COMMENT, Wrong data in field PROPS");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		break;
+@@ -1021,7 +1021,7 @@
+ 		if (lpRes->rt == RES_PROPERTY) {
+ 			// ULPROPTAG
+ 			if ((valueEntry = zend_hash_index_find(dataHash, ULPROPTAG)) == NULL) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_PROPERTY, Missing field ULPROPTAG");
++				php_error_docref(NULL, E_WARNING, "RES_PROPERTY, Missing field ULPROPTAG");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			SEPARATE_ZVAL(valueEntry);
+@@ -1030,7 +1030,7 @@
+ 
+ 			// RELOP
+ 			if ((valueEntry = zend_hash_index_find(dataHash, RELOP)) == NULL) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_PROPERTY, Missing field RELOP");
++				php_error_docref(NULL, E_WARNING, "RES_PROPERTY, Missing field RELOP");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			SEPARATE_ZVAL(valueEntry);
+@@ -1039,7 +1039,7 @@
+ 		} else {
+ 			// ULPROPTAG
+ 			if ((valueEntry = zend_hash_index_find(dataHash, ULPROPTAG)) == NULL) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_CONTENT, Missing field ULPROPTAG");
++				php_error_docref(NULL, E_WARNING, "RES_CONTENT, Missing field ULPROPTAG");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			SEPARATE_ZVAL(valueEntry);
+@@ -1054,7 +1054,7 @@
+ 			case PT_MV_BINARY:
+ 			case PT_MV_STRING8:
+ 				if ((valueEntry = zend_hash_index_find(dataHash, FUZZYLEVEL)) == NULL) {
+-					php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_CONTENT, Missing field FUZZYLEVEL");
++					php_error_docref(NULL, E_WARNING, "RES_CONTENT, Missing field FUZZYLEVEL");
+ 					return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 				}
+ 				SEPARATE_ZVAL(valueEntry);
+@@ -1062,20 +1062,20 @@
+ 				lpRes->res.resContent.ulFuzzyLevel = valueEntry->value.lval;
+ 				break;
+ 			default:
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_CONTENT, Not supported property type");
++				php_error_docref(NULL, E_WARNING, "RES_CONTENT, Not supported property type");
+ 				return MAPI_G(hr) = MAPI_E_TOO_COMPLEX;
+ 			};
+ 		}
+ 
+ 		// VALUE
+ 		if ((valueEntry = zend_hash_index_find(dataHash, VALUE)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_PROPERTY or RES_CONTENT, Missing field VALUE");
++			php_error_docref(NULL, E_WARNING, "RES_PROPERTY or RES_CONTENT, Missing field VALUE");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		if (Z_TYPE_P(valueEntry) == IS_ARRAY) {
+-			MAPI_G(hr) = PHPArraytoPropValueArray(valueEntry, lpBase, &cValues, &lpProp TSRMLS_CC);
++			MAPI_G(hr) = PHPArraytoPropValueArray(valueEntry, lpBase, &cValues, &lpProp);
+ 			if (MAPI_G(hr) != hrSuccess) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_PROPERTY or RES_CONTENT, Wrong data in field VALUE ");
++				php_error_docref(NULL, E_WARNING, "RES_PROPERTY or RES_CONTENT, Wrong data in field VALUE ");
+ 				return MAPI_G(hr);
+ 			}
+ 		} else {
+@@ -1141,13 +1141,13 @@
+ 			case PT_CLSID:
+ 				convert_to_string_ex(valueEntry);
+ 				if (valueEntry->value.str->len != sizeof(GUID)) {
+-					php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for PT_CLSID property in proptag 0x%08X", lpProp->ulPropTag);
++					php_error_docref(NULL, E_WARNING, "invalid value for PT_CLSID property in proptag 0x%08X", lpProp->ulPropTag);
+ 					return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 				}
+ 				MAPI_G(hr) = KAllocCopy(valueEntry->value.str->val, sizeof(GUID), reinterpret_cast<void **>(&lpProp->Value.lpguid), lpBase);
+ 				break;
+ 			default:
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_PROPERTY or RES_CONTENT, field VALUE no backward compatibility support");
++				php_error_docref(NULL, E_WARNING, "RES_PROPERTY or RES_CONTENT, field VALUE no backward compatibility support");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 				break;
+ 			}
+@@ -1161,7 +1161,7 @@
+ 	case RES_COMPAREPROPS:
+ 		// RELOP
+ 		if ((valueEntry = zend_hash_index_find(dataHash, RELOP)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMPAREPROPS, Missing field RELOP");
++			php_error_docref(NULL, E_WARNING, "RES_COMPAREPROPS, Missing field RELOP");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1169,7 +1169,7 @@
+ 		lpRes->res.resCompareProps.relop = valueEntry->value.lval;
+ 		// ULPROPTAG1
+ 		if ((valueEntry = zend_hash_index_find(dataHash, ULPROPTAG1)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMPAREPROPS, Missing field ULPROPTAG1");
++			php_error_docref(NULL, E_WARNING, "RES_COMPAREPROPS, Missing field ULPROPTAG1");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1177,7 +1177,7 @@
+ 		lpRes->res.resCompareProps.ulPropTag1 = valueEntry->value.lval;
+ 		// ULPROPTAG2
+ 		if ((valueEntry = zend_hash_index_find(dataHash, ULPROPTAG2)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMPAREPROPS, Missing field ULPROPTAG2");
++			php_error_docref(NULL, E_WARNING, "RES_COMPAREPROPS, Missing field ULPROPTAG2");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1187,7 +1187,7 @@
+ 	case RES_BITMASK:
+ 		// ULTYPE
+ 		if ((valueEntry = zend_hash_index_find(dataHash, ULTYPE)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_BITMASK, Missing field ULTYPE");
++			php_error_docref(NULL, E_WARNING, "RES_BITMASK, Missing field ULTYPE");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1195,7 +1195,7 @@
+ 		lpRes->res.resBitMask.relBMR = valueEntry->value.lval;
+ 		// ULMASK
+ 		if ((valueEntry = zend_hash_index_find(dataHash, ULMASK)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_BITMASK, Missing field ULMASK");
++			php_error_docref(NULL, E_WARNING, "RES_BITMASK, Missing field ULMASK");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1203,7 +1203,7 @@
+ 		lpRes->res.resBitMask.ulMask = valueEntry->value.lval;
+ 		// ULPROPTAG
+ 		if ((valueEntry = zend_hash_index_find(dataHash, ULPROPTAG)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_BITMASK, Missing field ULPROPTAG");
++			php_error_docref(NULL, E_WARNING, "RES_BITMASK, Missing field ULPROPTAG");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1213,7 +1213,7 @@
+ 	case RES_SIZE:
+ 		// CB
+ 		if ((valueEntry = zend_hash_index_find(dataHash, CB)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_SIZE, Missing field CB");
++			php_error_docref(NULL, E_WARNING, "RES_SIZE, Missing field CB");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1221,7 +1221,7 @@
+ 		lpRes->res.resSize.cb = valueEntry->value.lval;
+ 		// RELOP
+ 		if ((valueEntry = zend_hash_index_find(dataHash, RELOP)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_SIZE, Missing field RELOP");
++			php_error_docref(NULL, E_WARNING, "RES_SIZE, Missing field RELOP");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1229,7 +1229,7 @@
+ 		lpRes->res.resSize.relop = valueEntry->value.lval;
+ 		// ULPROPTAG
+ 		if ((valueEntry = zend_hash_index_find(dataHash, ULPROPTAG)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_SIZE, Missing field ULPROPTAG");
++			php_error_docref(NULL, E_WARNING, "RES_SIZE, Missing field ULPROPTAG");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1239,7 +1239,7 @@
+ 	case RES_EXIST:
+ 		// ULPROPTAG
+ 		if ((valueEntry = zend_hash_index_find(dataHash, ULPROPTAG)) == NULL) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_EXIST, Missing field ULPROPTAG");
++			php_error_docref(NULL, E_WARNING, "RES_EXIST, Missing field ULPROPTAG");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1247,19 +1247,19 @@
+ 		lpRes->res.resExist.ulPropTag = valueEntry->value.lval;
+ 		break;
+ 	default:
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown restriction type");
++		php_error_docref(NULL, E_WARNING, "Unknown restriction type");
+ 		break;
+ 	}
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT PHPArraytoSRestriction(zval *phpVal, void* lpBase, LPSRestriction *lppRes TSRMLS_DC) {
++HRESULT PHPArraytoSRestriction(zval *phpVal, void* lpBase, LPSRestriction *lppRes) {
+ 	LPSRestriction lpRes = NULL;
+ 	
+ 	MAPI_G(hr) = MAPI_ALLOC(sizeof(SRestriction), lpBase, (void **)&lpRes);
+ 	if(MAPI_G(hr) != hrSuccess)
+ 		return MAPI_G(hr);
+-	MAPI_G(hr) = PHPArraytoSRestriction(phpVal, lpBase ? lpBase : lpRes, lpRes TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSRestriction(phpVal, lpBase ? lpBase : lpRes, lpRes);
+ 	if(MAPI_G(hr) != hrSuccess)
+ 		goto exit;
+ 		
+@@ -1273,7 +1273,7 @@
+ }
+ 
+ HRESULT SRestrictiontoPHPArray(const SRestriction *lpRes, int level,
+-    zval *ret TSRMLS_DC)
++    zval *ret)
+ {
+ 	zval entry;
+ 	char key[16];
+@@ -1282,7 +1282,7 @@
+ 	zval restriction;
+ 
+ 	if (!lpRes) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No restriction in SRestrictiontoPHPArray");
++		php_error_docref(NULL, E_WARNING, "No restriction in SRestrictiontoPHPArray");
+ 		return MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+@@ -1296,7 +1296,7 @@
+ 		array_init(&array);
+ 		for (ULONG c = 0; c < lpRes->res.resAnd.cRes; ++c) {
+ 			sprintf(key, "%i", c);
+-			MAPI_G(hr) = SRestrictiontoPHPArray(&lpRes->res.resAnd.lpRes[c], level+1, &entry TSRMLS_CC);
++			MAPI_G(hr) = SRestrictiontoPHPArray(&lpRes->res.resAnd.lpRes[c], level+1, &entry);
+ 			if (MAPI_G(hr) != hrSuccess)
+ 				return MAPI_G(hr);
+ 			add_assoc_zval(&array, key, &entry);
+@@ -1309,7 +1309,7 @@
+ 		array_init(&array);
+ 		for (ULONG c = 0; c < lpRes->res.resOr.cRes; ++c) {
+ 			sprintf(key, "%i", c);
+-			MAPI_G(hr) = SRestrictiontoPHPArray(&lpRes->res.resOr.lpRes[c], level+1, &entry TSRMLS_CC);
++			MAPI_G(hr) = SRestrictiontoPHPArray(&lpRes->res.resOr.lpRes[c], level+1, &entry);
+ 			if (MAPI_G(hr) != hrSuccess)
+ 				return MAPI_G(hr);
+ 			add_assoc_zval(&array, key, &entry);
+@@ -1322,7 +1322,7 @@
+ 		// although it's only one value, it still is wrapped in an array.
+ 		array_init(&array);
+ 
+-		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resNot.lpRes, level+1, &entry TSRMLS_CC);
++		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resNot.lpRes, level+1, &entry);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		add_assoc_zval(&array, "0", &entry);
+@@ -1332,7 +1332,7 @@
+ 		break;
+ 
+ 	case RES_CONTENT:
+-		MAPI_G(hr) = PropValueArraytoPHPArray(1, lpRes->res.resContent.lpProp, &props TSRMLS_CC);
++		MAPI_G(hr) = PropValueArraytoPHPArray(1, lpRes->res.resContent.lpProp, &props);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		array_init(&array);
+@@ -1348,7 +1348,7 @@
+ 		break;
+ 
+ 	case RES_PROPERTY:
+-		MAPI_G(hr) = PropValueArraytoPHPArray(1, lpRes->res.resProperty.lpProp, &props TSRMLS_CC);
++		MAPI_G(hr) = PropValueArraytoPHPArray(1, lpRes->res.resProperty.lpProp, &props);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		array_init(&array);
+@@ -1412,7 +1412,7 @@
+ 		break;
+ 
+ 	case RES_SUBRESTRICTION:
+-		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resSub.lpRes, level+1, &restriction TSRMLS_CC);
++		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resSub.lpRes, level+1, &restriction);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		array_init(&array);
+@@ -1426,10 +1426,10 @@
+ 		break;
+ 
+ 	case RES_COMMENT:
+-		MAPI_G(hr) = PropValueArraytoPHPArray(lpRes->res.resComment.cValues, lpRes->res.resComment.lpProp, &props TSRMLS_CC);
++		MAPI_G(hr) = PropValueArraytoPHPArray(lpRes->res.resComment.cValues, lpRes->res.resComment.lpProp, &props);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+-		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resComment.lpRes, level+1, &restriction TSRMLS_CC);
++		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resComment.lpRes, level+1, &restriction);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		array_init(&array);
+@@ -1450,7 +1450,7 @@
+ *
+ */
+ HRESULT PropTagArraytoPHPArray(ULONG cValues,
+-    const SPropTagArray *lpPropTagArray, zval *zvalRet TSRMLS_DC)
++    const SPropTagArray *lpPropTagArray, zval *zvalRet)
+ {
+ 	unsigned int i = 0;
+ 	
+@@ -1470,7 +1470,7 @@
+ *
+ */
+ HRESULT PropValueArraytoPHPArray(ULONG cValues,
+-    const SPropValue *pPropValueArray, zval *zval_prop_value TSRMLS_DC)
++    const SPropValue *pPropValueArray, zval *zval_prop_value)
+ {
+ 	// local
+ 	zval zval_mvprop_value;	// mvprops converts
+@@ -1705,13 +1705,13 @@
+ 					break;
+ 				case OP_FORWARD:
+ 				case OP_DELEGATE:
+-					MAPI_G(hr) = RowSettoPHPArray((LPSRowSet)lpActions->lpAction[j].lpadrlist, &zval_alist_value TSRMLS_CC); // binary compatible
++					MAPI_G(hr) = RowSettoPHPArray((LPSRowSet)lpActions->lpAction[j].lpadrlist, &zval_alist_value); // binary compatible
+ 					if(MAPI_G(hr) != hrSuccess)
+ 						return MAPI_G(hr);
+ 					add_assoc_zval(&zval_action_value, "adrlist", &zval_alist_value);
+ 					break;
+ 				case OP_TAG:
+-					MAPI_G(hr) = PropValueArraytoPHPArray(1, &lpActions->lpAction[j].propTag, &zval_alist_value TSRMLS_CC);
++					MAPI_G(hr) = PropValueArraytoPHPArray(1, &lpActions->lpAction[j].propTag, &zval_alist_value);
+ 					if(MAPI_G(hr) != hrSuccess)
+ 						return MAPI_G(hr);
+ 					add_assoc_zval(&zval_action_value, "proptag", &zval_alist_value);
+@@ -1729,7 +1729,7 @@
+ 			break;
+ 		case PT_SRESTRICTION:
+ 			lpRestriction = (LPSRestriction)pPropValue->Value.lpszA;
+-			MAPI_G(hr) = SRestrictiontoPHPArray(lpRestriction, 0, &zval_action_value TSRMLS_CC);
++			MAPI_G(hr) = SRestrictiontoPHPArray(lpRestriction, 0, &zval_action_value);
+ 			if (MAPI_G(hr) != hrSuccess)
+ 				continue;
+ 			add_assoc_zval(zval_prop_value, pulproptag, &zval_action_value);
+@@ -1739,7 +1739,7 @@
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT RowSettoPHPArray(const SRowSet *lpRowSet, zval *ret TSRMLS_DC)
++HRESULT RowSettoPHPArray(const SRowSet *lpRowSet, zval *ret)
+ {
+ 	zval	zval_prop_value;
+ 	ULONG	crow	= 0;
+@@ -1750,7 +1750,7 @@
+ 
+ 	// make a PHP-array from the rowset resource.
+ 	for (crow = 0; crow < lpRowSet->cRows; ++crow) {
+-		PropValueArraytoPHPArray(lpRowSet->aRow[crow].cValues, lpRowSet->aRow[crow].lpProps, &zval_prop_value TSRMLS_CC);
++		PropValueArraytoPHPArray(lpRowSet->aRow[crow].cValues, lpRowSet->aRow[crow].lpProps, &zval_prop_value);
+ 		zend_hash_next_index_insert_new(HASH_OF(ret), &zval_prop_value);
+ 	}
+ 	
+@@ -1761,7 +1761,7 @@
+  * Convert from READSTATE array to PHP. Returns a list of arrays, each containing "sourcekey" and "flags" per entry
+  */
+ HRESULT ReadStateArraytoPHPArray(ULONG cValues, const READSTATE *lpReadStates,
+-    zval *pvalRet TSRMLS_DC)
++    zval *pvalRet)
+ {
+ 	unsigned int i=0;
+ 	
+@@ -1786,7 +1786,7 @@
+  * Convert from PHP to READSTATE array.
+  */
+  
+-HRESULT PHPArraytoReadStateArray(zval *zvalReadStates, void *lpBase, ULONG *lpcValues, LPREADSTATE *lppReadStates TSRMLS_DC)
++HRESULT PHPArraytoReadStateArray(zval *zvalReadStates, void *lpBase, ULONG *lpcValues, LPREADSTATE *lppReadStates)
+ {
+ 	LPREADSTATE 	lpReadStates = NULL;
+ 	HashTable		*target_hash = NULL;
+@@ -1800,7 +1800,7 @@
+ 
+ 	target_hash = HASH_OF(zvalReadStates);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoReadStateArray");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoReadStateArray");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -1819,7 +1819,7 @@
+ 			continue;
+ 		valueEntry = zend_hash_find(HASH_OF(pentry), str_sourcekey.get());
+ 		if (valueEntry == nullptr) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "No 'sourcekey' entry for one of the entries in the readstate list");
++			php_error_docref(NULL, E_WARNING, "No 'sourcekey' entry for one of the entries in the readstate list");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+@@ -1832,7 +1832,7 @@
+ 		lpReadStates[n].cbSourceKey = valueEntry->value.str->len;
+ 		valueEntry = zend_hash_find(HASH_OF(pentry), str_flags.get());
+ 		if (valueEntry == nullptr) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "No 'flags' entry for one of the entries in the readstate list");
++			php_error_docref(NULL, E_WARNING, "No 'flags' entry for one of the entries in the readstate list");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+@@ -1850,7 +1850,7 @@
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT PHPArraytoGUIDArray(zval *phpVal, void *lpBase, ULONG *lpcValues, LPGUID *lppGUIDs TSRMLS_DC)
++HRESULT PHPArraytoGUIDArray(zval *phpVal, void *lpBase, ULONG *lpcValues, LPGUID *lppGUIDs)
+ {
+ 	HashTable *target_hash = NULL;
+ 	LPGUID lpGUIDs = NULL;
+@@ -1861,7 +1861,7 @@
+ 
+ 	target_hash = HASH_OF(phpVal);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoGUIDArray");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoGUIDArray");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(Z_ARRVAL_P(phpVal));
+@@ -1879,7 +1879,7 @@
+ 		convert_to_string_ex(pentry);
+ 		
+ 		if(pentry->value.str->len != sizeof(GUID)){
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "GUID must be 16 bytes");
++			php_error_docref(NULL, E_WARNING, "GUID must be 16 bytes");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+@@ -1896,7 +1896,7 @@
+ }
+ 
+ HRESULT NotificationstoPHPArray(ULONG cNotifs, const NOTIFICATION *lpNotifs,
+-    zval *zvalRet TSRMLS_DC)
++    zval *zvalRet)
+ {
+ 	zval zvalProps;
+ 	unsigned int i = 0;
+@@ -1934,7 +1934,7 @@
+ 			if (lpNotifs[i].info.obj.lpOldParentID)
+ 				add_assoc_stringl(&zvalNotif, "oldparentid", (char *)lpNotifs[i].info.obj.lpOldParentID, lpNotifs[i].info.obj.cbOldParentID);
+ 			if (lpNotifs[i].info.obj.lpPropTagArray) {
+-				MAPI_G(hr) = PropTagArraytoPHPArray(lpNotifs[i].info.obj.lpPropTagArray->cValues, lpNotifs[i].info.obj.lpPropTagArray, &zvalProps TSRMLS_CC);
++				MAPI_G(hr) = PropTagArraytoPHPArray(lpNotifs[i].info.obj.lpPropTagArray->cValues, lpNotifs[i].info.obj.lpPropTagArray, &zvalProps);
+ 				if (MAPI_G(hr) != hrSuccess)
+ 					return MAPI_G(hr);
+ 				add_assoc_zval(&zvalNotif, "proptagarray", &zvalProps);
+@@ -1959,14 +1959,14 @@
+ 	zval			*entry = NULL;
+ 
+ 	if (!phpArray) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No phpArray in PHPArraytoSendingOptions");
++		php_error_docref(NULL, E_WARNING, "No phpArray in PHPArraytoSendingOptions");
+ 		// not an error
+ 		return hr;
+ 	}
+ 
+ 	target_hash = HASH_OF(phpArray);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoSendingOptions");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoSendingOptions");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return hr;
+ 	}
+@@ -1975,7 +1975,7 @@
+ 	zend_ulong numIndex __attribute__((unused)) = 0;
+ 	ZEND_HASH_FOREACH_KEY_VAL(target_hash, numIndex, keyIndex, entry) {
+ 		if (keyIndex == nullptr) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "PHPArraytoSendingOptions: expected array to be string-keyed");
++			php_error_docref(nullptr, E_WARNING, "PHPArraytoSendingOptions: expected array to be string-keyed");
+ 			continue;
+ 		}
+ 
+@@ -2001,7 +2001,7 @@
+ 			lpSOPT->ignore_missing_attachments = zval_is_true(entry);
+ 		} else {
+ 			// msg_in_msg and enable_dsn not allowed, others unknown
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown or disallowed sending option %s", keyIndex->val);
++			php_error_docref(NULL, E_WARNING, "Unknown or disallowed sending option %s", keyIndex->val);
+ 		}
+ 	} ZEND_HASH_FOREACH_END();
+ 	return hr;
+@@ -2017,14 +2017,14 @@
+ 	zval			*entry = NULL;
+ 
+ 	if (!phpArray) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No phpArray in PHPArraytoDeliveryOptions");
++		php_error_docref(NULL, E_WARNING, "No phpArray in PHPArraytoDeliveryOptions");
+ 		// not an error
+ 		return hr;
+ 	}
+ 
+ 	target_hash = HASH_OF(phpArray);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoDeliveryOptions");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoDeliveryOptions");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return hr;
+ 	}
+@@ -2033,7 +2033,7 @@
+ 	zend_ulong numIndex __attribute__((unused)) = 0;
+ 	ZEND_HASH_FOREACH_KEY_VAL(target_hash, numIndex, keyIndex, entry) {
+ 		if (keyIndex == nullptr) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "PHPArraytoDeliveryOptions: expected array to be string-keyed");
++			php_error_docref(nullptr, E_WARNING, "PHPArraytoDeliveryOptions: expected array to be string-keyed");
+ 			continue;
+ 		}
+ 
+@@ -2053,7 +2053,7 @@
+ 			lpDOPT->header_strict_rfc = zval_is_true(entry);
+ 		} else {
+ 			// user_entryid not supported, others unknown
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown or disallowed delivery option %s", keyIndex->val);
++			php_error_docref(NULL, E_WARNING, "Unknown or disallowed delivery option %s", keyIndex->val);
+ 		}
+ 	} ZEND_HASH_FOREACH_END();
+ 	return hr;
+--- a/php7-ext/typeconversion.h
++++ b/php7-ext/typeconversion.h
+@@ -39,20 +39,20 @@
+ // These allocate the structure and copy the data into it, then returns the entire allocated structure, allocation
+ // via lpBase if non null, otherwise just as MAPIAllocateBuffer
+ 
+-HRESULT			PHPArraytoSBinaryArray(zval * entryid_array, void *lpBase, LPENTRYLIST *lppEntryList TSRMLS_DC);
+-HRESULT			PHPArraytoSortOrderSet(zval * sortorder_array, void *lpBase, LPSSortOrderSet *lppSortOrderSet TSRMLS_DC);
+-HRESULT			PHPArraytoPropTagArray(zval * prop_value_array, void *lpBase, LPSPropTagArray *lppPropTagArray TSRMLS_DC);
+-HRESULT			PHPArraytoPropValueArray(zval* phpArray, void *lpBase, ULONG *lpcValues, LPSPropValue *lppPropValues TSRMLS_DC);
+-HRESULT			PHPArraytoAdrList(zval *phpArray, void *lpBase, LPADRLIST *lppAdrList TSRMLS_DC);
+-HRESULT			PHPArraytoRowList(zval *phpArray, void *lpBase, LPROWLIST *lppRowList TSRMLS_DC);
+-HRESULT			PHPArraytoSRestriction(zval *phpVal, void *lpBase, LPSRestriction *lppRestriction TSRMLS_DC);
+-HRESULT			PHPArraytoReadStateArray(zval *phpVal, void *lpBase, ULONG *lpcValues, LPREADSTATE *lppReadStates TSRMLS_DC);
+-HRESULT			PHPArraytoGUIDArray(zval *phpVal, void *lpBase, ULONG *lpcValues, LPGUID *lppGUIDs TSRMLS_DC);
++HRESULT			PHPArraytoSBinaryArray(zval * entryid_array, void *lpBase, LPENTRYLIST *lppEntryList);
++HRESULT			PHPArraytoSortOrderSet(zval * sortorder_array, void *lpBase, LPSSortOrderSet *lppSortOrderSet);
++HRESULT			PHPArraytoPropTagArray(zval * prop_value_array, void *lpBase, LPSPropTagArray *lppPropTagArray);
++HRESULT			PHPArraytoPropValueArray(zval* phpArray, void *lpBase, ULONG *lpcValues, LPSPropValue *lppPropValues);
++HRESULT			PHPArraytoAdrList(zval *phpArray, void *lpBase, LPADRLIST *lppAdrList);
++HRESULT			PHPArraytoRowList(zval *phpArray, void *lpBase, LPROWLIST *lppRowList);
++HRESULT			PHPArraytoSRestriction(zval *phpVal, void *lpBase, LPSRestriction *lppRestriction);
++HRESULT			PHPArraytoReadStateArray(zval *phpVal, void *lpBase, ULONG *lpcValues, LPREADSTATE *lppReadStates);
++HRESULT			PHPArraytoGUIDArray(zval *phpVal, void *lpBase, ULONG *lpcValues, LPGUID *lppGUIDs);
+ 
+ // These functions fill a pre-allocated structure, possibly allocating more memory via lpBase
+ 
+-HRESULT		 	PHPArraytoSBinaryArray(zval * entryid_array, void *lpBase, LPENTRYLIST lpEntryList TSRMLS_DC);
+-extern HRESULT PHPArraytoSRestriction(zval *, void *base, SRestriction * TSRMLS_DC) __attribute__((nonnull(2)));
++HRESULT		 	PHPArraytoSBinaryArray(zval * entryid_array, void *lpBase, LPENTRYLIST lpEntryList);
++extern HRESULT PHPArraytoSRestriction(zval *, void *base, SRestriction *) __attribute__((nonnull(2)));
+ 
+ /* imtoinet, imtomapi options */
+ extern HRESULT PHPArraytoSendingOptions(zval *, KC::sending_options *);
+@@ -64,12 +64,12 @@
+  * All functions return a newly allocated ZVAL structure which must be FREE_ZVAL()'ed by the caller.
+  */
+  
+-extern HRESULT SBinaryArraytoPHPArray(const SBinaryArray *, zval *ret TSRMLS_DC);
+-extern HRESULT PropTagArraytoPHPArray(ULONG nvals, const SPropTagArray *, zval *ret TSRMLS_DC);
+-extern HRESULT PropValueArraytoPHPArray(ULONG nvals, const SPropValue *, zval *ret TSRMLS_DC);
+-extern HRESULT SRestrictiontoPHPArray(const SRestriction *, int level, zval *ret TSRMLS_DC);
+-extern HRESULT RowSettoPHPArray(const SRowSet *, zval *ret TSRMLS_DC);
+-extern HRESULT ReadStateArraytoPHPArray(ULONG nvals, const READSTATE *, zval *ret TSRMLS_DC);
+-extern HRESULT NotificationstoPHPArray(ULONG nvals, const NOTIFICATION *, zval *ret TSRMLS_DC);
++extern HRESULT SBinaryArraytoPHPArray(const SBinaryArray *, zval *ret);
++extern HRESULT PropTagArraytoPHPArray(ULONG nvals, const SPropTagArray *, zval *ret);
++extern HRESULT PropValueArraytoPHPArray(ULONG nvals, const SPropValue *, zval *ret);
++extern HRESULT SRestrictiontoPHPArray(const SRestriction *, int level, zval *ret);
++extern HRESULT RowSettoPHPArray(const SRowSet *, zval *ret);
++extern HRESULT ReadStateArraytoPHPArray(ULONG nvals, const READSTATE *, zval *ret);
++extern HRESULT NotificationstoPHPArray(ULONG nvals, const NOTIFICATION *, zval *ret);
+ 
+ #endif
+--- a/php-ext/ECImportContentsChangesProxy.cpp
++++ b/php-ext/ECImportContentsChangesProxy.cpp
+@@ -46,7 +46,7 @@
+ #include "typeconversion.h"
+ #include "main.h"
+ 
+-ECImportContentsChangesProxy::ECImportContentsChangesProxy(zval *lpObj TSRMLS_DC) :
++ECImportContentsChangesProxy::ECImportContentsChangesProxy(zval *lpObj) :
+ 	m_cRef(1), m_lpObj(lpObj)
+ {
+ #if ZEND_MODULE_API_NO >= 20071006
+@@ -113,8 +113,8 @@
+     
+     ZVAL_STRING(pvalFuncName, "Config" , 1);
+     
+-    if(call_user_function(NULL, &m_lpObj, pvalFuncName, pvalReturn, 2, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Config method not present on ImportContentsChanges object");
++    if(call_user_function(NULL, &m_lpObj, pvalFuncName, pvalReturn, 2, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "Config method not present on ImportContentsChanges object");
+         hr = MAPI_E_CALL_FAILED;
+         goto exit;
+     }
+@@ -151,8 +151,8 @@
+ 	}
+     
+     ZVAL_STRING(pvalFuncName, "UpdateState" , 1);
+-	if (call_user_function(nullptr, &m_lpObj, pvalFuncName, pvalReturn, 1, &pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "UpdateState method not present on ImportContentsChanges object");
++	if (call_user_function(nullptr, &m_lpObj, pvalFuncName, pvalReturn, 1, &pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "UpdateState method not present on ImportContentsChanges object");
+         hr = MAPI_E_CALL_FAILED;
+         goto exit;
+     }
+@@ -178,9 +178,9 @@
+     MAKE_STD_ZVAL(pvalFuncName);
+     MAKE_STD_ZVAL(pvalReturn);
+ 
+-    hr = PropValueArraytoPHPArray(cValues, lpPropArray, &pvalArgs[0] TSRMLS_CC);
++    hr = PropValueArraytoPHPArray(cValues, lpPropArray, &pvalArgs[0]);
+     if(hr != hrSuccess) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert MAPI propvalue array to PHP");
++        php_error_docref(NULL, E_WARNING, "Unable to convert MAPI propvalue array to PHP");
+         goto exit;
+     }
+     MAKE_STD_ZVAL(pvalArgs[1]);
+@@ -191,8 +191,8 @@
+     
+     ZVAL_STRING(pvalFuncName, "ImportMessageChange", 1);
+     
+-    if(call_user_function(NULL, &m_lpObj, pvalFuncName, pvalReturn, 3, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportMessageChange method not present on ImportContentsChanges object");
++    if(call_user_function(NULL, &m_lpObj, pvalFuncName, pvalReturn, 3, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "ImportMessageChange method not present on ImportContentsChanges object");
+         hr = MAPI_E_CALL_FAILED;
+         goto exit;
+     }
+@@ -204,10 +204,10 @@
+     if(hr != hrSuccess)
+         goto exit;
+ 
+-    lpMessage = (IMessage *) zend_fetch_resource(&pvalReturn TSRMLS_CC, -1, name_mapi_message, NULL, 1, le_mapi_message);
++    lpMessage = (IMessage *) zend_fetch_resource(&pvalReturn, -1, name_mapi_message, NULL, 1, le_mapi_message);
+         
+     if(!lpMessage) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportMessageChange() must return a valid MAPI message resource in the last argument when returning OK (0)");
++        php_error_docref(NULL, E_WARNING, "ImportMessageChange() must return a valid MAPI message resource in the last argument when returning OK (0)");
+         hr = MAPI_E_CALL_FAILED;
+         goto exit;
+     }         
+@@ -238,12 +238,12 @@
+     MAKE_STD_ZVAL(pvalArgs[0]);
+ 
+     ZVAL_LONG(pvalArgs[0], ulFlags);
+-    SBinaryArraytoPHPArray(lpSourceEntryList, &pvalArgs[1] TSRMLS_CC);
++    SBinaryArraytoPHPArray(lpSourceEntryList, &pvalArgs[1]);
+ 
+     ZVAL_STRING(pvalFuncName, "ImportMessageDeletion" , 1);
+     
+-    if(call_user_function(NULL, &m_lpObj, pvalFuncName, pvalReturn, 2, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportMessageDeletion method not present on ImportContentsChanges object");
++    if(call_user_function(NULL, &m_lpObj, pvalFuncName, pvalReturn, 2, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "ImportMessageDeletion method not present on ImportContentsChanges object");
+         hr = MAPI_E_CALL_FAILED;
+         goto exit;
+     }
+@@ -270,10 +270,10 @@
+     
+     MAKE_STD_ZVAL(pvalFuncName);
+     MAKE_STD_ZVAL(pvalReturn);
+-	ReadStateArraytoPHPArray(cElements, lpReadState, &pvalArgs TSRMLS_CC);
++	ReadStateArraytoPHPArray(cElements, lpReadState, &pvalArgs);
+     ZVAL_STRING(pvalFuncName, "ImportPerUserReadStateChange" , 1);
+-	if (call_user_function(nullptr, &m_lpObj, pvalFuncName, pvalReturn, 1, &pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportPerUserReadStateChange method not present on ImportContentsChanges object");
++	if (call_user_function(nullptr, &m_lpObj, pvalFuncName, pvalReturn, 1, &pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "ImportPerUserReadStateChange method not present on ImportContentsChanges object");
+         hr = MAPI_E_CALL_FAILED;
+         goto exit;
+     }
+--- a/php-ext/ECImportContentsChangesProxy.h
++++ b/php-ext/ECImportContentsChangesProxy.h
+@@ -17,7 +17,7 @@
+ 	TSRMLS_D;
+ #endif
+ public:
+-    ECImportContentsChangesProxy(zval *objTarget TSRMLS_DC);
++    ECImportContentsChangesProxy(zval *objTarget);
+     ~ECImportContentsChangesProxy();
+ 	virtual ULONG AddRef() override;
+ 	virtual ULONG Release() override;
+--- a/php-ext/ECImportHierarchyChangesProxy.cpp
++++ b/php-ext/ECImportHierarchyChangesProxy.cpp
+@@ -46,7 +46,7 @@
+ #include "typeconversion.h"
+ #include "main.h"
+ 
+-ECImportHierarchyChangesProxy::ECImportHierarchyChangesProxy(zval *lpObj TSRMLS_DC) :
++ECImportHierarchyChangesProxy::ECImportHierarchyChangesProxy(zval *lpObj) :
+ 	m_cRef(1), m_lpObj(lpObj)
+ {
+ #if ZEND_MODULE_API_NO >= 20071006
+@@ -113,8 +113,8 @@
+     
+     ZVAL_STRING(pvalFuncName, "Config" , 1);
+     
+-    if(call_user_function(NULL, &m_lpObj, pvalFuncName, pvalReturn, 2, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Config method not present on ImportHierarchyChanges object");
++    if(call_user_function(NULL, &m_lpObj, pvalFuncName, pvalReturn, 2, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "Config method not present on ImportHierarchyChanges object");
+         hr = MAPI_E_CALL_FAILED;
+         goto exit;
+     }
+@@ -151,8 +151,8 @@
+ 	}
+     
+     ZVAL_STRING(pvalFuncName, "UpdateState" , 1);
+-	if (call_user_function(nullptr, &m_lpObj, pvalFuncName, pvalReturn, 1, &pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "UpdateState method not present on ImportHierarchyChanges object");
++	if (call_user_function(nullptr, &m_lpObj, pvalFuncName, pvalReturn, 1, &pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "UpdateState method not present on ImportHierarchyChanges object");
+         hr = MAPI_E_CALL_FAILED;
+         goto exit;
+     }
+@@ -176,15 +176,15 @@
+     
+     MAKE_STD_ZVAL(pvalFuncName);
+     MAKE_STD_ZVAL(pvalReturn);
+-    hr = PropValueArraytoPHPArray(cValues, lpPropArray, &pvalArgs TSRMLS_CC);
++    hr = PropValueArraytoPHPArray(cValues, lpPropArray, &pvalArgs);
+     if(hr != hrSuccess) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert MAPI propvalue array to PHP");
++        php_error_docref(NULL, E_WARNING, "Unable to convert MAPI propvalue array to PHP");
+         goto exit;
+     }
+     
+     ZVAL_STRING(pvalFuncName, "ImportFolderChange", 1);
+-	if (call_user_function(nullptr, &m_lpObj, pvalFuncName, pvalReturn, 1, &pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportFolderChange method not present on ImportHierarchyChanges object");
++	if (call_user_function(nullptr, &m_lpObj, pvalFuncName, pvalReturn, 1, &pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "ImportFolderChange method not present on ImportHierarchyChanges object");
+         hr = MAPI_E_CALL_FAILED;
+         goto exit;
+     }
+@@ -216,12 +216,12 @@
+     MAKE_STD_ZVAL(pvalArgs[0]);
+ 
+     ZVAL_LONG(pvalArgs[0], ulFlags);
+-    SBinaryArraytoPHPArray(lpSourceEntryList, &pvalArgs[1] TSRMLS_CC);
++    SBinaryArraytoPHPArray(lpSourceEntryList, &pvalArgs[1]);
+ 
+     ZVAL_STRING(pvalFuncName, "ImportFolderDeletion" , 1);
+     
+-    if(call_user_function(NULL, &m_lpObj, pvalFuncName, pvalReturn, 2, pvalArgs TSRMLS_CC) == FAILURE) {
+-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "ImportFolderDeletion method not present on ImportHierarchyChanges object");
++    if(call_user_function(NULL, &m_lpObj, pvalFuncName, pvalReturn, 2, pvalArgs) == FAILURE) {
++        php_error_docref(NULL, E_WARNING, "ImportFolderDeletion method not present on ImportHierarchyChanges object");
+         hr = MAPI_E_CALL_FAILED;
+         goto exit;
+     }
+--- a/php-ext/ECImportHierarchyChangesProxy.h
++++ b/php-ext/ECImportHierarchyChangesProxy.h
+@@ -17,7 +17,7 @@
+ 	TSRMLS_D;
+ #endif
+ public:
+-    ECImportHierarchyChangesProxy(zval *objTarget TSRMLS_DC);
++    ECImportHierarchyChangesProxy(zval *objTarget);
+     ~ECImportHierarchyChangesProxy();
+ 	virtual ULONG AddRef() override;
+ 	virtual ULONG Release() override;
+--- a/php-ext/main.cpp
++++ b/php-ext/main.cpp
+@@ -3,6 +3,7 @@
+  * Copyright 2005 - 2016 Zarafa and its licensors
+  */
+ #include "phpconfig.h"
++#include "phparginfo.h"
+ #include <kopano/platform.h>
+ #include <kopano/ecversion.h>
+ #include <algorithm>
+@@ -37,8 +38,6 @@
+  * - do not create HRESULT variables, but use MAPI_G(hr) so the php script
+  *   can retrieve the value with mapi_last_hresult()
+  *
+- * - all internal functions need to pass TSRMLS_CC in the end, so win32 version compiles
+- *
+  * - when using "l" in zend_parse_parameters(), use 'long' (64-bit) as variable type, not ULONG (32-bit)
+  * - when using "s" in zend_parse_parameters(), the string length is "int" in PHP5 and "size_t" in PHP7. Use our php_stringsize_t typedef.
+  *
+@@ -111,37 +110,18 @@
+ 
+ typedef int php_stringsize_t; /* cf. va_arg call in php/Zend/zend_API.c */
+ 
+-// Destructor functions needed for the PHP resources. 
+-static void _php_free_mapi_rowset(zend_rsrc_list_entry *rsrc TSRMLS_DC);
+-
+-// Not defined anymore in PHP 5.3.0
+-#if ZEND_MODULE_API_NO >= 20071006
+-ZEND_BEGIN_ARG_INFO(first_arg_force_ref, 0)
+-        ZEND_ARG_PASS_INFO(1)
+-ZEND_END_ARG_INFO()
+-
+-ZEND_BEGIN_ARG_INFO(second_arg_force_ref, 0)
+-        ZEND_ARG_PASS_INFO(0)
+-        ZEND_ARG_PASS_INFO(1)
+-ZEND_END_ARG_INFO()
+-
+-ZEND_BEGIN_ARG_INFO(fourth_arg_force_ref, 0)
+-        ZEND_ARG_PASS_INFO(0)
+-        ZEND_ARG_PASS_INFO(0)
+-        ZEND_ARG_PASS_INFO(0)
+-        ZEND_ARG_PASS_INFO(1)
+-ZEND_END_ARG_INFO()
+-#endif
++// Destructor functions needed for the PHP resources.
++static void _php_free_mapi_rowset(zend_rsrc_list_entry *rsrc);
+ 
+ #define LOG_BEGIN() do { \
+ 	if (mapi_debug & 1) \
+-		php_error_docref(nullptr TSRMLS_CC, E_NOTICE, "[IN] %s", __FUNCTION__); \
++		php_error_docref(nullptr, E_NOTICE, "[IN] %s", __FUNCTION__); \
+ } while (false)
+ 
+ #define LOG_END() do { \
+ 	if (mapi_debug & 2) { \
+ 		HRESULT hrx =  MAPI_G(hr); \
+-		php_error_docref(nullptr TSRMLS_CC, E_NOTICE, "[OUT] %s: %s (%x)", __FUNCTION__, GetMAPIErrorMessage(hrx), hrx); \
++		php_error_docref(nullptr, E_NOTICE, "[OUT] %s: %s (%x)", __FUNCTION__, GetMAPIErrorMessage(hrx), hrx); \
+ 	} \
+ } while (false)
+ 
+@@ -251,197 +231,171 @@
+ /* function list so that the Zend engine will know what's here */
+ zend_function_entry mapi_functions[] =
+ {
+-	ZEND_FE(mapi_last_hresult, NULL)
+-	ZEND_FE(mapi_prop_type, NULL)
+-	ZEND_FE(mapi_prop_id, NULL)
+-	ZEND_FE(mapi_is_error, NULL)
+-	ZEND_FE(mapi_make_scode, NULL)
+-	ZEND_FE(mapi_prop_tag, NULL)
+-	ZEND_FE(mapi_createoneoff, NULL)
+-	ZEND_FE(mapi_parseoneoff, NULL)
+-	ZEND_FE(mapi_logon_zarafa, NULL)
+-	ZEND_FE(mapi_getmsgstorestable, NULL)
+-	ZEND_FE(mapi_openmsgstore, NULL)
+-	ZEND_FE(mapi_openprofilesection, NULL)
+-
+-	ZEND_FE(mapi_openaddressbook, NULL)
+-	ZEND_FE(mapi_openentry, NULL)
+-	ZEND_FE(mapi_ab_openentry, NULL)
++	ZEND_FE(mapi_last_hresult, arginfo_mapi_last_hresult)
++	ZEND_FE(mapi_prop_type, arginfo_mapi_prop_type)
++	ZEND_FE(mapi_prop_id, arginfo_mapi_prop_id)
++	ZEND_FE(mapi_is_error, arginfo_mapi_is_error)
++	ZEND_FE(mapi_make_scode, arginfo_mapi_make_scode)
++	ZEND_FE(mapi_prop_tag, arginfo_mapi_prop_tag)
++	ZEND_FE(mapi_createoneoff, arginfo_mapi_createoneoff)
++	ZEND_FE(mapi_parseoneoff, arginfo_mapi_parseoneoff)
++	ZEND_FE(mapi_logon_zarafa, arginfo_mapi_logon_zarafa)
++	ZEND_FE(mapi_getmsgstorestable, arginfo_mapi_getmsgstorestable)
++	ZEND_FE(mapi_openmsgstore, arginfo_mapi_openmsgstore)
++	ZEND_FE(mapi_openprofilesection, arginfo_mapi_openprofilesection)
++
++	ZEND_FE(mapi_openaddressbook, arginfo_mapi_openaddressbook)
++	ZEND_FE(mapi_openentry, arginfo_mapi_openentry)
++	ZEND_FE(mapi_ab_openentry, arginfo_mapi_ab_openentry)
+ 	// TODO: add other functions for le_mapi_mailuser and le_mapi_distlist
+-	ZEND_FE(mapi_ab_resolvename, NULL)
+-	ZEND_FE(mapi_ab_getdefaultdir, NULL)
++	ZEND_FE(mapi_ab_resolvename, arginfo_mapi_ab_resolvename)
++	ZEND_FE(mapi_ab_getdefaultdir, arginfo_mapi_ab_getdefaultdir)
+ 
+-	ZEND_FE(mapi_msgstore_createentryid, NULL)
+-	ZEND_FE(mapi_msgstore_getarchiveentryid, NULL)
+-	ZEND_FE(mapi_msgstore_openentry, NULL)
+-	ZEND_FE(mapi_msgstore_getreceivefolder, NULL)
+-	ZEND_FE(mapi_msgstore_entryidfromsourcekey, NULL)
+-	ZEND_FE(mapi_msgstore_openmultistoretable, NULL)
+-	ZEND_FE(mapi_msgstore_advise, NULL)
+-	ZEND_FE(mapi_msgstore_unadvise, NULL)
+-	ZEND_FE(mapi_msgstore_abortsubmit, nullptr)
++	ZEND_FE(mapi_msgstore_createentryid, arginfo_mapi_msgstore_createentryid)
++	ZEND_FE(mapi_msgstore_getarchiveentryid, arginfo_mapi_msgstore_getarchiveentryid)
++	ZEND_FE(mapi_msgstore_openentry, arginfo_mapi_msgstore_openentry)
++	ZEND_FE(mapi_msgstore_getreceivefolder, arginfo_mapi_msgstore_getreceivefolder)
++	ZEND_FE(mapi_msgstore_entryidfromsourcekey, arginfo_mapi_msgstore_entryidfromsourcekey)
++	ZEND_FE(mapi_msgstore_advise, arginfo_mapi_msgstore_advise)
++	ZEND_FE(mapi_msgstore_unadvise, arginfo_mapi_msgstore_unadvise)
++	ZEND_FE(mapi_msgstore_abortsubmit, arginfo_mapi_msgstore_abortsubmit)
+ 	
+-	ZEND_FE(mapi_sink_create, NULL)
+-	ZEND_FE(mapi_sink_timedwait, NULL)
++	ZEND_FE(mapi_sink_create, arginfo_mapi_sink_create)
++	ZEND_FE(mapi_sink_timedwait, arginfo_mapi_sink_timedwait)
+ 
+-	ZEND_FE(mapi_table_queryallrows, NULL)
+-	ZEND_FE(mapi_table_queryrows, NULL)
+-	ZEND_FE(mapi_table_getrowcount, NULL)
+-	ZEND_FE(mapi_table_setcolumns, NULL)
+-	ZEND_FE(mapi_table_seekrow, NULL)
+-	ZEND_FE(mapi_table_sort, NULL)
+-	ZEND_FE(mapi_table_restrict, NULL)
+-	ZEND_FE(mapi_table_findrow, NULL)
+-	ZEND_FE(mapi_table_createbookmark, NULL)
+-	ZEND_FE(mapi_table_freebookmark, NULL)
+-
+-	ZEND_FE(mapi_folder_gethierarchytable, NULL)
+-	ZEND_FE(mapi_folder_getcontentstable, NULL)
+-	ZEND_FE(mapi_folder_createmessage, NULL)
+-	ZEND_FE(mapi_folder_createfolder, NULL)
+-	ZEND_FE(mapi_folder_deletemessages, NULL)
+-	ZEND_FE(mapi_folder_copymessages, NULL)
+-	ZEND_FE(mapi_folder_emptyfolder, NULL)
+-	ZEND_FE(mapi_folder_copyfolder, NULL)
+-	ZEND_FE(mapi_folder_deletefolder, NULL)
+-	ZEND_FE(mapi_folder_setreadflags, NULL)
+-	ZEND_FE(mapi_folder_openmodifytable, NULL)
+-	ZEND_FE(mapi_folder_setsearchcriteria, NULL)
+-	ZEND_FE(mapi_folder_getsearchcriteria, NULL)
+-
+-	ZEND_FE(mapi_message_getattachmenttable, NULL)
+-	ZEND_FE(mapi_message_getrecipienttable, NULL)
+-	ZEND_FE(mapi_message_openattach, NULL)
+-	ZEND_FE(mapi_message_createattach, NULL)
+-	ZEND_FE(mapi_message_deleteattach, NULL)
+-	ZEND_FE(mapi_message_modifyrecipients, NULL)
+-	ZEND_FE(mapi_message_submitmessage, NULL)
+-	ZEND_FE(mapi_message_setreadflag, NULL)
+-
+-	ZEND_FE(mapi_openpropertytostream, NULL)
+-	ZEND_FE(mapi_stream_write, NULL)
+-	ZEND_FE(mapi_stream_read, NULL)
+-	ZEND_FE(mapi_stream_stat, NULL)
+-	ZEND_FE(mapi_stream_seek, NULL)
+-	ZEND_FE(mapi_stream_commit, NULL)
+-	ZEND_FE(mapi_stream_setsize, NULL)
+-	ZEND_FE(mapi_stream_create, NULL)
+-
+-	ZEND_FE(mapi_attach_openobj, NULL)
+-	ZEND_FE(mapi_savechanges, NULL)
+-	ZEND_FE(mapi_getprops, NULL)
+-	ZEND_FE(mapi_setprops, NULL)
+-	ZEND_FE(mapi_copyto, NULL)
+-	ZEND_FE(mapi_openproperty, NULL)
+-	ZEND_FE(mapi_deleteprops, NULL)
+-	ZEND_FE(mapi_getnamesfromids, NULL)
+-	ZEND_FE(mapi_getidsfromnames, NULL)
+-
+-	ZEND_FE(mapi_decompressrtf, NULL)
+-
+-	ZEND_FE(mapi_rules_gettable, NULL)
+-	ZEND_FE(mapi_rules_modifytable, NULL)
+-
+-	ZEND_FE(mapi_zarafa_createuser, NULL)
+-	ZEND_FE(mapi_zarafa_setuser, NULL)
+-	ZEND_FE(mapi_zarafa_getuser_by_id, NULL)
+-	ZEND_FE(mapi_zarafa_getuser_by_name, NULL)
+-	ZEND_FE(mapi_zarafa_deleteuser, NULL)
+-	ZEND_FE(mapi_zarafa_createstore, NULL)
+-	ZEND_FE(mapi_zarafa_getuserlist, NULL)
+-	ZEND_FE(mapi_zarafa_getquota, NULL)
+-	ZEND_FE(mapi_zarafa_setquota, NULL)
+-	ZEND_FE(mapi_zarafa_creategroup, NULL)
+-	ZEND_FE(mapi_zarafa_deletegroup, NULL)
+-	ZEND_FE(mapi_zarafa_addgroupmember, NULL)
+-	ZEND_FE(mapi_zarafa_deletegroupmember, NULL)
+-	ZEND_FE(mapi_zarafa_setgroup, NULL)
+-	ZEND_FE(mapi_zarafa_getgroup_by_id, NULL)
+-	ZEND_FE(mapi_zarafa_getgroup_by_name, NULL)
+-	ZEND_FE(mapi_zarafa_getgrouplist, NULL)
+-	ZEND_FE(mapi_zarafa_getgrouplistofuser, NULL)
+-	ZEND_FE(mapi_zarafa_getuserlistofgroup, NULL)
+-	ZEND_FE(mapi_zarafa_createcompany, NULL)
+-	ZEND_FE(mapi_zarafa_deletecompany, NULL)
+-	ZEND_FE(mapi_zarafa_getcompany_by_id, NULL)
+-	ZEND_FE(mapi_zarafa_getcompany_by_name, NULL)
+-	ZEND_FE(mapi_zarafa_getcompanylist, NULL)
+-	ZEND_FE(mapi_zarafa_add_company_remote_viewlist, NULL)
+-	ZEND_FE(mapi_zarafa_del_company_remote_viewlist, NULL)
+-	ZEND_FE(mapi_zarafa_get_remote_viewlist, NULL)
+-	ZEND_FE(mapi_zarafa_add_user_remote_adminlist, NULL)
+-	ZEND_FE(mapi_zarafa_del_user_remote_adminlist, NULL)
+-	ZEND_FE(mapi_zarafa_get_remote_adminlist, NULL)
+-	ZEND_FE(mapi_zarafa_add_quota_recipient, NULL)
+-	ZEND_FE(mapi_zarafa_del_quota_recipient, NULL)
+-	ZEND_FE(mapi_zarafa_get_quota_recipientlist, NULL)
+-	ZEND_FE(mapi_zarafa_getpermissionrules, NULL)
+-	ZEND_FE(mapi_zarafa_setpermissionrules, NULL)
+-
+-	ZEND_FE(mapi_freebusysupport_open, NULL)
+-	ZEND_FE(mapi_freebusysupport_close, NULL)
+-	ZEND_FE(mapi_freebusysupport_loaddata, NULL)
+-	ZEND_FE(mapi_freebusysupport_loadupdate, NULL)
+-
+-	ZEND_FE(mapi_freebusydata_enumblocks, NULL)
+-	ZEND_FE(mapi_freebusydata_getpublishrange, NULL)
+-	ZEND_FE(mapi_freebusydata_setrange, NULL)
+-
+-	ZEND_FE(mapi_freebusyenumblock_reset, NULL)
+-	ZEND_FE(mapi_freebusyenumblock_next, NULL)
+-	ZEND_FE(mapi_freebusyenumblock_skip, NULL)
+-	ZEND_FE(mapi_freebusyenumblock_restrict, NULL)
+-	ZEND_FE(mapi_freebusyenumblock_ical, NULL)
+-
+-	ZEND_FE(mapi_freebusyupdate_publish, NULL)
+-	ZEND_FE(mapi_freebusyupdate_reset, NULL)
+-	ZEND_FE(mapi_freebusyupdate_savechanges, NULL)
+-
+-	ZEND_FE(mapi_exportchanges_config, NULL)
+-	ZEND_FE(mapi_exportchanges_synchronize, NULL)
+-	ZEND_FE(mapi_exportchanges_updatestate, NULL)
+-	ZEND_FE(mapi_exportchanges_getchangecount, NULL)
+-
+-	ZEND_FE(mapi_importcontentschanges_config, NULL)
+-	ZEND_FE(mapi_importcontentschanges_updatestate, NULL)
+-	ZEND_FE(mapi_importcontentschanges_importmessagechange, fourth_arg_force_ref)
+-	ZEND_FE(mapi_importcontentschanges_importmessagedeletion, NULL)
+-	ZEND_FE(mapi_importcontentschanges_importperuserreadstatechange, NULL)
+-	ZEND_FE(mapi_importcontentschanges_importmessagemove, NULL)
+-
+-	ZEND_FE(mapi_importhierarchychanges_config, NULL)
+-	ZEND_FE(mapi_importhierarchychanges_updatestate, NULL)
+-	ZEND_FE(mapi_importhierarchychanges_importfolderchange, NULL)
+-	ZEND_FE(mapi_importhierarchychanges_importfolderdeletion, NULL)
+-
+-	ZEND_FE(mapi_wrap_importcontentschanges, first_arg_force_ref)
+-	ZEND_FE(mapi_wrap_importhierarchychanges, first_arg_force_ref)
+-
+-	ZEND_FE(mapi_inetmapi_imtoinet, NULL)
+-	ZEND_FE(mapi_inetmapi_imtomapi, NULL)
+-
+-	ZEND_FE(mapi_icaltomapi, nullptr)
+-	ZEND_FE(mapi_mapitoical, nullptr)
+-
+-	ZEND_FE(mapi_vcftomapi, nullptr)
+-	ZEND_FE(mapi_mapitovcf, nullptr)
+-
+-	ZEND_FE(mapi_enable_exceptions, NULL)
+-
+-    ZEND_FE(mapi_feature, NULL)
+-
+-	ZEND_FALIAS(mapi_attach_openbin, mapi_openproperty, NULL)
+-	ZEND_FALIAS(mapi_msgstore_getprops, mapi_getprops, NULL)
+-	ZEND_FALIAS(mapi_folder_getprops, mapi_getprops, NULL)
+-	ZEND_FALIAS(mapi_message_getprops, mapi_getprops, NULL)
+-	ZEND_FALIAS(mapi_message_setprops, mapi_setprops, NULL)
+-	ZEND_FALIAS(mapi_message_openproperty, mapi_openproperty, NULL)
+-	ZEND_FALIAS(mapi_attach_getprops, mapi_getprops, NULL)
+-	ZEND_FALIAS(mapi_attach_openproperty, mapi_openproperty, NULL)
+-	ZEND_FALIAS(mapi_message_savechanges, mapi_savechanges, NULL)
++	ZEND_FE(mapi_table_queryallrows, arginfo_mapi_table_queryallrows)
++	ZEND_FE(mapi_table_queryrows, arginfo_mapi_table_queryrows)
++	ZEND_FE(mapi_table_getrowcount, arginfo_mapi_table_getrowcount)
++	ZEND_FE(mapi_table_setcolumns, arginfo_mapi_table_setcolumns)
++	ZEND_FE(mapi_table_seekrow, arginfo_mapi_table_seekrow)
++	ZEND_FE(mapi_table_sort, arginfo_mapi_table_sort)
++	ZEND_FE(mapi_table_restrict, arginfo_mapi_table_restrict)
++
++	ZEND_FE(mapi_folder_gethierarchytable, arginfo_mapi_folder_gethierarchytable)
++	ZEND_FE(mapi_folder_getcontentstable, arginfo_mapi_folder_getcontentstable)
++	ZEND_FE(mapi_folder_createmessage, arginfo_mapi_folder_createmessage)
++	ZEND_FE(mapi_folder_createfolder, arginfo_mapi_folder_createfolder)
++	ZEND_FE(mapi_folder_deletemessages, arginfo_mapi_folder_deletemessages)
++	ZEND_FE(mapi_folder_copymessages, arginfo_mapi_folder_copymessages)
++	ZEND_FE(mapi_folder_emptyfolder, arginfo_mapi_folder_emptyfolder)
++	ZEND_FE(mapi_folder_copyfolder, arginfo_mapi_folder_copyfolder)
++	ZEND_FE(mapi_folder_deletefolder, arginfo_mapi_folder_deletefolder)
++	ZEND_FE(mapi_folder_setreadflags, arginfo_mapi_folder_setreadflags)
++	ZEND_FE(mapi_folder_openmodifytable, arginfo_mapi_folder_openmodifytable)
++	ZEND_FE(mapi_folder_setsearchcriteria, arginfo_mapi_folder_setsearchcriteria)
++	ZEND_FE(mapi_folder_getsearchcriteria, arginfo_mapi_folder_getsearchcriteria)
++
++	ZEND_FE(mapi_message_getattachmenttable, arginfo_mapi_message_getattachmenttable)
++	ZEND_FE(mapi_message_getrecipienttable, arginfo_mapi_message_getrecipientttable)
++	ZEND_FE(mapi_message_openattach, arginfo_mapi_message_openattach)
++	ZEND_FE(mapi_message_createattach, arginfo_mapi_message_createattach)
++	ZEND_FE(mapi_message_deleteattach, arginfo_mapi_message_deleteattach)
++	ZEND_FE(mapi_message_modifyrecipients, arginfo_mapi_message_modifyrecipients)
++	ZEND_FE(mapi_message_submitmessage, arginfo_mapi_message_submitmessage)
++	ZEND_FE(mapi_message_setreadflag, arginfo_mapi_message_setreadflag)
++
++	ZEND_FE(mapi_stream_write, arginfo_mapi_stream_write)
++	ZEND_FE(mapi_stream_read, arginfo_mapi_stream_read)
++	ZEND_FE(mapi_stream_stat, arginfo_mapi_stream_stat)
++	ZEND_FE(mapi_stream_seek, arginfo_mapi_stream_seek)
++	ZEND_FE(mapi_stream_commit, arginfo_mapi_stream_commit)
++	ZEND_FE(mapi_stream_setsize, arginfo_mapi_stream_setsize)
++	ZEND_FE(mapi_stream_create, arginfo_mapi_stream_create)
++
++	ZEND_FE(mapi_attach_openobj, arginfo_mapi_attach_openobj)
++	ZEND_FE(mapi_savechanges, arginfo_mapi_savechanges)
++	ZEND_FE(mapi_getprops, arginfo_mapi_getprops)
++	ZEND_FE(mapi_setprops, arginfo_mapi_setprops)
++	ZEND_FE(mapi_copyto, arginfo_mapi_copyto)
++	ZEND_FE(mapi_openproperty, arginfo_mapi_openpropertyd)
++	ZEND_FE(mapi_deleteprops, arginfo_mapi_deleteprops)
++	ZEND_FE(mapi_getnamesfromids, arginfo_mapi_getnamesfromids)
++	ZEND_FE(mapi_getidsfromnames, arginfo_mapi_getidsfromnames)
++
++	ZEND_FE(mapi_decompressrtf, arginfo_mapi_decompressrtf)
++
++	ZEND_FE(mapi_rules_gettable, arginfo_mapi_rules_gettable)
++	ZEND_FE(mapi_rules_modifytable, arginfo_mapi_rules_modifytable)
++
++	ZEND_FE(mapi_zarafa_getuser_by_id, arginfo_mapi_zarafa_getuser_by_id)
++	ZEND_FE(mapi_zarafa_getuser_by_name, arginfo_mapi_zarafa_getuser_by_name)
++	ZEND_FE(mapi_zarafa_getuserlist, arginfo_mapi_zarafa_getuserlist)
++	ZEND_FE(mapi_zarafa_getgrouplist, arginfo_mapi_zarafa_getgrouplist)
++	ZEND_FE(mapi_zarafa_getgrouplistofuser, arginfo_mapi_zarafa_getgrouplistofuser)
++	ZEND_FE(mapi_zarafa_getuserlistofgroup, arginfo_mapi_zarafa_getuserlistofgroup)
++	ZEND_FE(mapi_zarafa_getcompanylist, arginfo_mapi_zarafa_getcompanylist)
++	ZEND_FE(mapi_zarafa_getpermissionrules, arginfo_mapi_zarafa_getpermissionsrules)
++	ZEND_FE(mapi_zarafa_setpermissionrules, arginfo_mapi_zarafa_setpermissionsrules)
++
++	ZEND_FE(mapi_freebusy_openmsg, arginfo_mapi_freebusy_openmsg)
++	ZEND_FE(mapi_freebusysupport_open, arginfo_mapi_freebusysupport_open)
++	ZEND_FE(mapi_freebusysupport_close, arginfo_mapi_freebusysupport_close)
++	ZEND_FE(mapi_freebusysupport_loaddata, arginfo_mapi_freebusysupport_loaddata)
++	ZEND_FE(mapi_freebusysupport_loadupdate, arginfo_mapi_freebusysupport_loadupdate)
++
++	ZEND_FE(mapi_freebusydata_enumblocks, arginfo_mapi_freebusydata_enumblocks)
++	ZEND_FE(mapi_freebusydata_getpublishrange, arginfo_mapi_freebusydata_getpublishrange)
++	ZEND_FE(mapi_freebusydata_setrange, arginfo_mapi_freebusydata_setrange)
++
++	ZEND_FE(mapi_freebusyenumblock_reset, arginfo_mapi_freebusyenumblock_reset)
++	ZEND_FE(mapi_freebusyenumblock_next, arginfo_mapi_freebusyenumblock_next)
++	ZEND_FE(mapi_freebusyenumblock_skip, arginfo_mapi_freebusyenumblock_skip)
++	ZEND_FE(mapi_freebusyenumblock_restrict, arginfo_mapi_freebusyenumblock_restrict)
++	ZEND_FE(mapi_freebusyenumblock_ical, arginfo_mapi_freebusyenumblock_ical)
++
++	ZEND_FE(mapi_freebusyupdate_publish, arginfo_mapi_freebusyupdate_publish)
++	ZEND_FE(mapi_freebusyupdate_reset, arginfo_mapi_freebusyupdate_reset)
++	ZEND_FE(mapi_freebusyupdate_savechanges, arginfo_mapi_freebusyupdate_savechanges)
++
++	ZEND_FE(mapi_exportchanges_config, arginfo_mapi_exportchanges_config)
++	ZEND_FE(mapi_exportchanges_synchronize, arginfo_mapi_exportchanges_synchronize)
++	ZEND_FE(mapi_exportchanges_updatestate, arginfo_mapi_exportchanges_updatestate)
++	ZEND_FE(mapi_exportchanges_getchangecount, arginfo_mapi_exportchanges_getchangecount)
++
++	ZEND_FE(mapi_importcontentschanges_config, arginfo_mapi_importcontentschanges_config)
++	ZEND_FE(mapi_importcontentschanges_updatestate, arginfo_mapi_importcontentschanges_updatestate)
++	ZEND_FE(mapi_importcontentschanges_importmessagechange, arginfo_mapi_importcontentschanges_importmessagechange)
++	ZEND_FE(mapi_importcontentschanges_importmessagedeletion, arginfo_mapi_importcontentschanges_importmessagedeletion)
++	ZEND_FE(mapi_importcontentschanges_importperuserreadstatechange, arginfo_mapi_importcontentschanges_importperuserreadstatechange)
++	ZEND_FE(mapi_importcontentschanges_importmessagemove, arginfo_mapi_importcontentschanges_importmessagemove)
++
++	ZEND_FE(mapi_importhierarchychanges_config, arginfo_mapi_importhierarchychanges_config)
++	ZEND_FE(mapi_importhierarchychanges_updatestate, arginfo_mapi_importhierarchychanges_updatestate)
++	ZEND_FE(mapi_importhierarchychanges_importfolderchange, arginfo_mapi_importhierarchychanges_importfolderchange)
++	ZEND_FE(mapi_importhierarchychanges_importfolderdeletion, arginfo_mapi_importhierarchychanges_importfolderdeletion)
++
++	ZEND_FE(mapi_wrap_importcontentschanges, arginfo_mapi_wrap_importcontentschanges)
++	ZEND_FE(mapi_wrap_importhierarchychanges, arginfo_mapi_wrap_importcontentschanges)
++
++	ZEND_FE(mapi_inetmapi_imtoinet, arginfo_mapi_inetmapi_imtoinet)
++	ZEND_FE(mapi_inetmapi_imtomapi, arginfo_mapi_inetmapi_imtomapi)
++
++	ZEND_FE(mapi_icaltomapi, arginfo_mapi_icaltomapi)
++	ZEND_FE(mapi_mapitoical, arginfo_mapi_icaltomapi2)
++	ZEND_FE(mapi_numinvalidicalproperties, arginfo_mapi_numinvalidicalproperties)
++	ZEND_FE(mapi_numinvalidicalcomponents, arginfo_mapi_numinvalidicalcomponents)
++	ZEND_FE(mapi_mapitoical, arginfo_mapi_mapitoical)
++
++	ZEND_FE(mapi_vcftomapi, arginfo_mapi_vcftomapi)
++	ZEND_FE(mapi_vcftomapi2, arginfo_mapi_vcftomapi2)
++	ZEND_FE(mapi_mapitovcf, arginfo_mapi_mapitovcf)
++
++	ZEND_FE(mapi_enable_exceptions, arginfo_mapi_enable_exceptions)
++
++    ZEND_FE(mapi_feature, arginfo_mapi_feature)
++
++	ZEND_FALIAS(mapi_attach_openbin, mapi_openproperty, arginfo_mapi_openproperty)
++	ZEND_FALIAS(mapi_msgstore_getprops, mapi_getprops, arginfo_mapi_setprops)
++	ZEND_FALIAS(mapi_folder_getprops, mapi_getprops, arginfo_mapi_setprops)
++	ZEND_FALIAS(mapi_message_getprops, mapi_getprops, arginfo_mapi_getprops)
++	ZEND_FALIAS(mapi_message_setprops, mapi_setprops, arginfo_mapi_setprops)
++	ZEND_FALIAS(mapi_message_openproperty, mapi_openproperty, arginfo_mapi_openproperty)
++	ZEND_FALIAS(mapi_attach_getprops, mapi_getprops, arginfo_mapi_getprops)
++	ZEND_FALIAS(mapi_attach_openproperty, mapi_openproperty, arginfo_mapi_openproperty)
++	ZEND_FALIAS(mapi_message_savechanges, mapi_savechanges, arginfo_mapi_savechanges)
+ 
+-	ZEND_FE(kc_session_save, second_arg_force_ref)
+-	ZEND_FE(kc_session_restore, second_arg_force_ref)
++	ZEND_FE(kc_session_save, arginfo_kc_session_save)
++	ZEND_FE(kc_session_restore, arginfo_kc_session_restore)
+ 	{NULL, NULL, NULL}
+ };
+ 
+@@ -535,7 +489,7 @@
+ }
+ 
+ template<typename T> static void
+-_php_free_mapi_object(zend_rsrc_list_entry *rsrc TSRMLS_DC)
++_php_free_mapi_object(zend_rsrc_list_entry *rsrc)
+ {
+ 	if (rsrc->ptr != nullptr)
+ 		static_cast<T *>(rsrc->ptr)->Release();
+@@ -547,7 +501,7 @@
+ PHP_MINIT_FUNCTION(mapi) {
+ 	int ret = LoadSettingsFile();
+ 	if (ret != SUCCESS)
+-		return ret;
++		return FAILURE;
+ 
+ 	le_mapi_session = zend_register_list_destructors_ex(_php_free_mapi_object<IMAPISession>, nullptr, const_cast<char *>(name_mapi_session), module_number);
+ 	le_mapi_table = zend_register_list_destructors_ex(_php_free_mapi_object<IMAPITable>, nullptr, const_cast<char *>(name_mapi_table), module_number);
+@@ -595,7 +549,7 @@
+ 			lpLogger->logf(EC_LOGLEVEL_ERROR, "MAPI error: %s (%x) (method: %s, line: %d)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr), __FUNCTION__, __LINE__); \
+ 			\
+ 		if (MAPI_G(exceptions_enabled)) \
+-			zend_throw_exception(MAPI_G(exception_ce), "MAPI error ", MAPI_G(hr)  TSRMLS_CC); \
++			zend_throw_exception(MAPI_G(exception_ce), "MAPI error ", MAPI_G(hr) ); \
+ 	}
+ 
+ /**
+@@ -644,7 +598,7 @@
+ ***************************************************************/
+ 
+ // This is called when our proxy object goes out of scope
+-static void _php_free_mapi_rowset(zend_rsrc_list_entry *rsrc TSRMLS_DC)
++static void _php_free_mapi_rowset(zend_rsrc_list_entry *rsrc)
+ {
+ 	auto pRowSet = static_cast<SRowSet *>(rsrc->ptr);
+ 	if (pRowSet) FreeProws(pRowSet);
+@@ -666,7 +620,7 @@
+ {
+ 	long ulPropTag;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &ulPropTag) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &ulPropTag) == FAILURE) return;
+ 
+ 	RETURN_LONG(PROP_TYPE(ulPropTag));
+ }
+@@ -679,7 +633,7 @@
+ {
+ 	long ulPropTag;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &ulPropTag) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &ulPropTag) == FAILURE) return;
+ 
+ 	RETURN_LONG(PROP_ID(ulPropTag));
+ }
+@@ -691,7 +645,7 @@
+ {
+ 	long errorcode;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &errorcode) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &errorcode) == FAILURE) return;
+ 
+ 	RETURN_BOOL(IS_ERROR(errorcode));
+ }
+@@ -707,7 +661,7 @@
+ {
+ 	long sev, code;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &sev, &code) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ll", &sev, &code) == FAILURE) return;
+ 
+ 	/*
+ 	 * sev has two possible values: 0 for a warning, 1 for an error
+@@ -724,7 +678,7 @@
+ {
+ 	long ulPropID, ulPropType;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &ulPropType, &ulPropID) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ll", &ulPropType, &ulPropID) == FAILURE) return;
+ 
+ 	// PHP uses variable type 'long' internally. If a number in a string as key is used in add_assoc_*(),
+ 	// it is re-interpreted a a number when it's smaller than LONG_MAX.
+@@ -759,31 +713,31 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|l",
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "sss|l",
+ 		&szDisplayName, &ulDisplayNameLen,
+ 		&szType, &ulTypeLen,
+ 		&szEmailAddress, &ulEmailAddressLen, &ulFlags) == FAILURE) return;
+ 
+ 	MAPI_G(hr) = TryConvert(szDisplayName, name);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateOneOff name conversion failed");
++		php_error_docref(NULL, E_WARNING, "CreateOneOff name conversion failed");
+ 		goto exit;
+ 	}
+ 
+ 	MAPI_G(hr) = TryConvert(szType, type);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateOneOff type conversion failed");
++		php_error_docref(NULL, E_WARNING, "CreateOneOff type conversion failed");
+ 		goto exit;
+ 	}
+ 
+ 	MAPI_G(hr) = TryConvert(szEmailAddress, email);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateOneOff address conversion failed");
++		php_error_docref(NULL, E_WARNING, "CreateOneOff address conversion failed");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = ECCreateOneOff((LPTSTR)name.c_str(), (LPTSTR)type.c_str(), (LPTSTR)email.c_str(), MAPI_UNICODE | ulFlags, &cbEntryID, &~lpEntryID);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateOneOff failed");
++		php_error_docref(NULL, E_WARNING, "CreateOneOff failed");
+ 		goto exit;
+ 	}
+ 
+@@ -813,12 +767,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &lpEntryID, &cbEntryID) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &lpEntryID, &cbEntryID) == FAILURE) return;
+ 
+ 	MAPI_G(hr) = ECParseOneOff(lpEntryID, cbEntryID, wstrDisplayName, wstrType, wstrAddress);
+ 
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "ParseOneOff failed");
++		php_error_docref(NULL, E_WARNING, "ParseOneOff failed");
+ 		goto exit;
+ 	}
+ 
+@@ -880,7 +834,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ssslss",
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ss|ssslss",
+ 		&username, &username_len, &password, &password_len, &server, &server_len,
+ 		&sslcert, &sslcert_len, &sslpass, &sslpass_len, &ulFlags,
+ 		&wa_version, &wa_version_len, &misc_version, &misc_version_len) == FAILURE) return;
+@@ -914,7 +868,7 @@
+ 
+ 	MAPI_G(hr) = mapi_util_createprof(szProfName, "ZARAFA6", 8, sPropOur);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mapi_util_getlasterror().c_str());
++		php_error_docref(NULL, E_WARNING, "%s", mapi_util_getlasterror().c_str());
+ 		goto exit; // error already displayed in mapi_util_createprof
+ 	}
+ 
+@@ -925,14 +879,14 @@
+ 	             &~lpMAPISession);
+ 	if (MAPI_G(hr) != hrSuccess) {
+ 		mapi_util_deleteprof(szProfName);
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to logon to profile");
++		php_error_docref(NULL, E_WARNING, "Unable to logon to profile");
+ 		goto exit;
+ 	}
+ 
+ 	// Delete the profile (it will be deleted when we close our session)
+ 	MAPI_G(hr) = mapi_util_deleteprof(szProfName);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to delete profile");
++		php_error_docref(NULL, E_WARNING, "Unable to delete profile");
+ 		goto exit;
+ 	}
+ 
+@@ -966,7 +920,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpSession, IMAPISession *, &res, -1, name_mapi_session, le_mapi_session);
+ 	MAPI_G(hr) = lpSession->OpenEntry(cbEntryID, lpEntryID,
+@@ -988,7 +942,7 @@
+ 			goto exit;
+ 		ZEND_REGISTER_RESOURCE(return_value, msg.release(), le_mapi_message);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "EntryID is not a folder or a message.");
++		php_error_docref(NULL, E_WARNING, "EntryID is not a folder or a message.");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -1014,7 +968,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpSession, IMAPISession*, &res, -1, name_mapi_session, le_mapi_session);
+ 
+@@ -1043,7 +997,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpAddrBook, LPADRBOOK, &res, -1, name_mapi_addrbook, le_mapi_addrbook);
+ 
+@@ -1071,7 +1025,7 @@
+ 			goto exit;
+ 		ZEND_REGISTER_RESOURCE(return_value, ab.release(), le_mapi_abcont);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "EntryID is not an AddressBook item");
++		php_error_docref(NULL, E_WARNING, "EntryID is not an AddressBook item");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -1098,11 +1052,11 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &array, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &array, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpAddrBook, LPADRBOOK, &res, -1, name_mapi_addrbook, le_mapi_addrbook);
+ 
+-	MAPI_G(hr) = PHPArraytoAdrList(array, nullptr, &~lpAList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoAdrList(array, nullptr, &~lpAList);
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		goto exit;
+ 
+@@ -1110,7 +1064,7 @@
+ 	switch (MAPI_G(hr)) {
+ 	case hrSuccess:
+ 		// parse back lpAList and return as array
+-		RowSettoPHPArray(reinterpret_cast<SRowSet *>(lpAList.get()), &rowset TSRMLS_CC); // binary compatible
++		RowSettoPHPArray(reinterpret_cast<SRowSet *>(lpAList.get()), &rowset); // binary compatible
+ 		RETVAL_ZVAL(rowset, 0, 0);
+ 		FREE_ZVAL(rowset);
+ 		break;
+@@ -1138,13 +1092,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpAddrBook, LPADRBOOK, &res, -1, name_mapi_addrbook, le_mapi_addrbook);
+ 
+ 	MAPI_G(hr) = lpAddrBook->GetDefaultDir(&cbEntryID, &~lpEntryID);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Failed GetDefaultDir of addressbook: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Failed GetDefaultDir of addressbook: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -1173,14 +1127,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpSession, IMAPISession *, &res, -1, name_mapi_session, le_mapi_session);
+ 
+ 	MAPI_G(hr) = lpSession->GetMsgStoresTable(0, &lpTable);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to fetch the message store table: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to fetch the message store table: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -1211,7 +1165,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs",
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs",
+ 		&res, (char *)&lpEntryID, &cbEntryID) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpSession, IMAPISession *, &res, -1, name_mapi_session, le_mapi_session);
+@@ -1219,7 +1173,7 @@
+ 	MAPI_G(hr) = lpSession->OpenMsgStore(0, cbEntryID, lpEntryID, 0, MAPI_BEST_ACCESS | MDB_NO_DIALOG, &pMDB);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to open message store: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to open message store: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -1253,7 +1207,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpUID, &uidlen) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpUID, &uidlen) == FAILURE) return;
+ 
+ 	if (uidlen != sizeof(MAPIUID))
+ 		goto exit;
+@@ -1290,7 +1244,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	zend_list_find(Z_RESVAL_P(res), &type);
+ 	if(type == le_mapi_folder) {
+@@ -1306,7 +1260,7 @@
+ 		ZEND_FETCH_RESOURCE_C(dl, decltype(dl), &res, -1, name_mapi_distlist, le_mapi_distlist);
+ 		MAPI_G(hr) = dl->GetHierarchyTable(ulFlags, &lpTable);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid IMAPIFolder or derivative");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid IMAPIFolder or derivative");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -1342,7 +1296,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	zend_list_find(Z_RESVAL_P(res), &type);
+ 	if(type == le_mapi_folder) {
+@@ -1358,7 +1312,7 @@
+ 		ZEND_FETCH_RESOURCE_C(dl, decltype(dl), &res, -1, name_mapi_distlist, le_mapi_distlist);
+ 		MAPI_G(hr) = dl->GetContentsTable(ulFlags, &pTable);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid IMAPIContainer or derivative");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid IMAPIContainer or derivative");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -1390,7 +1344,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pFolder, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+@@ -1424,13 +1378,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &entryid_array, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &entryid_array, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pFolder, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, NULL, &~lpEntryList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, NULL, &~lpEntryList);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message list");
++		php_error_docref(NULL, E_WARNING, "Bad message list");
+ 		goto exit;
+ 	}
+ 
+@@ -1464,14 +1418,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rar|l", &srcFolder, &msgArray, &destFolder, &flags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rar|l", &srcFolder, &msgArray, &destFolder, &flags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpSrcFolder, LPMAPIFOLDER, &srcFolder, -1, name_mapi_folder, le_mapi_folder);
+ 	ZEND_FETCH_RESOURCE_C(lpDestFolder, LPMAPIFOLDER, &destFolder, -1, name_mapi_folder, le_mapi_folder);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(msgArray, NULL, &~lpEntryList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(msgArray, NULL, &~lpEntryList);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message list");
++		php_error_docref(NULL, E_WARNING, "Bad message list");
+ 		goto exit;
+ 	}
+ 
+@@ -1505,13 +1459,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &entryArray, &flags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &entryArray, &flags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFolder, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(entryArray, NULL, &~lpEntryList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(entryArray, NULL, &~lpEntryList);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message list");
++		php_error_docref(NULL, E_WARNING, "Bad message list");
+ 		goto exit;
+ 	}
+ 
+@@ -1546,10 +1500,10 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|sll", &srcFolder, &lpszFolderName, &FolderNameLen, &lpszFolderComment, &FolderCommentLen, &ulFlags, &folderType) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs|sll", &srcFolder, &lpszFolderName, &FolderNameLen, &lpszFolderComment, &FolderCommentLen, &ulFlags, &folderType) == FAILURE) return;
+ 
+ 	if (FolderNameLen == 0) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Foldername cannot be empty");
++		php_error_docref(NULL, E_WARNING, "Foldername cannot be empty");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -1581,7 +1535,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs|l", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFolder, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+@@ -1608,7 +1562,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFolder, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+@@ -1644,13 +1598,13 @@
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+ 	// Params: (SrcFolder, entryid, DestFolder, (opt) New foldername, (opt) Flags)
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsr|sl", &zvalSrcFolder, &lpEntryID, &cbEntryID, &zvalDestFolder, &lpszNewFolderName, &cbNewFolderNameLen, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rsr|sl", &zvalSrcFolder, &lpEntryID, &cbEntryID, &zvalDestFolder, &lpszNewFolderName, &cbNewFolderNameLen, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpSrcFolder, LPMAPIFOLDER, &zvalSrcFolder, -1, name_mapi_folder, le_mapi_folder);
+ 	ZEND_FETCH_RESOURCE_C(lpDestFolder, LPMAPIFOLDER, &zvalDestFolder, -1, name_mapi_folder, le_mapi_folder);
+ 
+ 	if (lpEntryID == NULL) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "EntryID must not be empty.");
++		php_error_docref(NULL, E_WARNING, "EntryID must not be empty.");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -1695,13 +1649,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &sMailboxDN, &lMailboxDN) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &sMailboxDN, &lMailboxDN) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMDB, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+ 	MAPI_G(hr) = pMDB->QueryInterface(IID_IExchangeManageStore, &~lpEMS);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "IExchangeManageStore interface was not supported by given store.");
++		php_error_docref(NULL, E_WARNING, "IExchangeManageStore interface was not supported by given store.");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpEMS->CreateStoreEntryID(reinterpret_cast<const TCHAR *>(""), reinterpret_cast<const TCHAR *>(sMailboxDN), 0, &cbEntryID, &~lpEntryID);
+@@ -1741,13 +1695,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &sUser, &lUser, &sServer, &lServer) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &sUser, &lUser, &sServer, &lServer) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMDB, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+ 	MAPI_G(hr) = pMDB->QueryInterface(iid_of(ptrSA), &~ptrSA);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "IECServiceAdmin interface was not supported by given store.");
++		php_error_docref(NULL, E_WARNING, "IECServiceAdmin interface was not supported by given store.");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = ptrSA->GetArchiveStoreEntryID((LPTSTR)sUser, (LPTSTR)sServer, 0, &cbEntryID, &~ptrEntryID);
+@@ -1785,7 +1739,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|sl", &res, &lpEntryID, &cbEntryID, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMDB, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+@@ -1809,7 +1763,7 @@
+ 			goto exit;
+ 		ZEND_REGISTER_RESOURCE(return_value, msg.release(), le_mapi_message);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "EntryID is not a folder or a message.");
++		php_error_docref(NULL, E_WARNING, "EntryID is not a folder or a message.");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -1835,7 +1789,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|s", &resStore, &lpSourceKeyFolder, &cbSourceKeyFolder, &lpSourceKeyMessage, &cbSourceKeyMessage) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rs|s", &resStore, &lpSourceKeyFolder, &cbSourceKeyFolder, &lpSourceKeyMessage, &cbSourceKeyMessage) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &resStore, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+@@ -1867,7 +1821,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rslr", &resStore, &lpEntryId, &cbEntryId, &ulMask, &resSink) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rslr", &resStore, &lpEntryId, &cbEntryId, &ulMask, &resSink) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &resStore, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	ZEND_FETCH_RESOURCE_C(lpSink, MAPINotifSink *, &resSink, -1, name_mapi_advisesink, le_mapi_advisesink);
+@@ -1897,7 +1851,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &resStore, &ulConnection) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &resStore, &ulConnection) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &resStore, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+@@ -1938,7 +1892,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &resSink, &ulTime) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &resSink, &ulTime) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpSink, MAPINotifSink *, &resSink, -1, name_mapi_advisesink, le_mapi_advisesink);
+ 	
+@@ -1946,9 +1900,9 @@
+ 	if(MAPI_G(hr) != hrSuccess)
+ 	    goto exit;
+ 	    
+-	MAPI_G(hr) = NotificationstoPHPArray(cNotifs, lpNotifs, &notifications TSRMLS_CC);
++	MAPI_G(hr) = NotificationstoPHPArray(cNotifs, lpNotifs, &notifications);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The notifications could not be converted to a PHP array");
++		php_error_docref(NULL, E_WARNING, "The notifications could not be converted to a PHP array");
+ 		goto exit;
+ 	}
+ 
+@@ -1985,7 +1939,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|aa", &res, &tagArray, &restrictionArray) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|aa", &res, &tagArray, &restrictionArray) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+@@ -1995,18 +1949,18 @@
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			goto exit;
+ 
+-		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, /* result */lpRestrict, /* Base */lpRestrict TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, /* result */lpRestrict, /* Base */lpRestrict);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP srestriction array");
++			php_error_docref(NULL, E_WARNING, "Failed to convert the PHP srestriction array");
+ 			goto exit;
+ 		}
+ 	}
+ 
+ 	if (tagArray != NULL) {
+ 		// create proptag array
+-		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP proptag array");
++			php_error_docref(NULL, E_WARNING, "Failed to convert the PHP proptag array");
+ 			goto exit;
+ 		}
+ 	}
+@@ -2017,9 +1971,9 @@
+ 	// return the returncode
+ 	if (FAILED(MAPI_G(hr)))
+ 		goto exit;
+-	MAPI_G(hr) = RowSettoPHPArray(pRowSet.get(), &rowset TSRMLS_CC);
++	MAPI_G(hr) = RowSettoPHPArray(pRowSet.get(), &rowset);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The resulting rowset could not be converted to a PHP array");
++		php_error_docref(NULL, E_WARNING, "The resulting rowset could not be converted to a PHP array");
+ 		goto exit;
+ 	}
+ 	RETVAL_ZVAL(rowset, 0, 0);
+@@ -2055,21 +2009,21 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|a!ll", &res, &tagArray, &start, &lRowCount) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|a!ll", &res, &tagArray, &start, &lRowCount) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+ 	if (tagArray != NULL) {
+-		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP Array");
++			php_error_docref(NULL, E_WARNING, "Failed to convert the PHP Array");
+ 			goto exit;
+ 		}
+ 
+ 		MAPI_G(hr) = lpTable->SetColumns(lpTagArray, TBL_BATCH);
+ 
+ 		if (FAILED(MAPI_G(hr))) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "SetColumns failed: %s (%x)",
++			php_error_docref(nullptr, E_WARNING, "SetColumns failed: %s (%x)",
+ 				GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 			goto exit;
+ 		}
+@@ -2080,7 +2034,7 @@
+ 		MAPI_G(hr) = lpTable->SeekRow(BOOKMARK_BEGINNING, start, NULL);
+ 
+ 		if (FAILED(MAPI_G(hr))) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "SeekRow failed: %s (%x)",
++			php_error_docref(nullptr, E_WARNING, "SeekRow failed: %s (%x)",
+ 				GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 			goto exit;
+ 		}
+@@ -2089,9 +2043,9 @@
+ 	MAPI_G(hr) = lpTable->QueryRows(lRowCount, 0, &~pRowSet);
+ 	if (FAILED(MAPI_G(hr)))
+ 		goto exit;
+-	MAPI_G(hr) = RowSettoPHPArray(pRowSet.get(), &rowset TSRMLS_CC);
++	MAPI_G(hr) = RowSettoPHPArray(pRowSet.get(), &rowset);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The resulting rowset could not be converted to a PHP array");
++		php_error_docref(NULL, E_WARNING, "The resulting rowset could not be converted to a PHP array");
+ 		goto exit;
+ 	}
+ 
+@@ -2125,20 +2079,20 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &tagArray, &lFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &tagArray, &lFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+-	MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP Array");
++		php_error_docref(NULL, E_WARNING, "Failed to convert the PHP Array");
+ 		goto exit;
+ 	}
+ 
+ 	MAPI_G(hr) = lpTable->SetColumns(lpTagArray, lFlags);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "SetColumns failed: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "SetColumns failed: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -2171,14 +2125,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &res, &lbookmark, &lRowCount) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &res, &lbookmark, &lRowCount) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+ 	MAPI_G(hr) = lpTable->SeekRow((BOOKMARK)lbookmark, lRowCount, (LONG*)&lRowsSought);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "SeekRow failed: %s (%x)",
++		php_error_docref(NULL, E_WARNING, "SeekRow failed: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -2210,13 +2164,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &sortArray, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &sortArray, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+-	MAPI_G(hr) = PHPArraytoSortOrderSet(sortArray, NULL, &~lpSortCriteria TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSortOrderSet(sortArray, NULL, &~lpSortCriteria);
+ 	if(MAPI_G(hr) != hrSuccess)
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert sort order set from the PHP array");
++		php_error_docref(NULL, E_WARNING, "Unable to convert sort order set from the PHP array");
+ 
+ 	MAPI_G(hr) = lpTable->SortTable(lpSortCriteria, ulFlags);
+ 	if (FAILED(MAPI_G(hr)))
+@@ -2246,7 +2200,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+@@ -2280,7 +2234,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &restrictionArray, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &restrictionArray, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+@@ -2289,9 +2243,9 @@
+ 		lpRestrict.reset();
+ 	} else {
+ 		// create restrict array
+-		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, NULL, &~lpRestrict TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, NULL, &~lpRestrict);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP srestriction Array");
++			php_error_docref(NULL, E_WARNING, "Failed to convert the PHP srestriction Array");
+ 			goto exit;
+ 		}
+ 	}
+@@ -2326,7 +2280,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|ll", &res, &restrictionArray, &bkOrigin, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|ll", &res, &restrictionArray, &bkOrigin, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+@@ -2335,9 +2289,9 @@
+ 		lpRestrict.reset();
+ 	} else {
+ 		// create restrict array
+-		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, NULL, &~lpRestrict TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(restrictionArray, NULL, &~lpRestrict);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP srestriction Array");
++			php_error_docref(NULL, E_WARNING, "Failed to convert the PHP srestriction Array");
+ 			goto exit;
+ 		}
+ 	}
+@@ -2376,14 +2330,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+ 	MAPI_G(hr) = lpTable->CreateBookmark((BOOKMARK*)&lbookmark);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Create bookmark failed: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Create bookmark failed: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -2414,14 +2368,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &lbookmark) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &lbookmark) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpTable, LPMAPITABLE, &res, -1, name_mapi_table, le_mapi_table);
+ 
+ 	MAPI_G(hr) = lpTable->FreeBookmark((BOOKMARK)lbookmark);
+ 
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Free bookmark failed: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Free bookmark failed: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -2454,7 +2408,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMDB, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+@@ -2497,18 +2451,18 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &entryid_array, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &entryid_array, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMDB, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, NULL, &~lpEntryList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, NULL, &~lpEntryList);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message list");
++		php_error_docref(NULL, E_WARNING, "Bad message list");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = GetECObject(lpMDB, iid_of(lpECMST), &~lpECMST);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano object");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano object");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpECMST->OpenMultiStoreTable(lpEntryList, ulFlags, &lpMultiTable);
+@@ -2540,13 +2494,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rla", &res, &flags, &adrlist) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rla", &res, &flags, &adrlist) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMessage, LPMESSAGE, &res, -1, name_mapi_message, le_mapi_message);
+ 
+-	MAPI_G(hr) = PHPArraytoAdrList(adrlist, nullptr, &~lpListRecipients TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoAdrList(adrlist, nullptr, &~lpListRecipients);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse recipient list");
++		php_error_docref(NULL, E_WARNING, "Unable to parse recipient list");
+ 		goto exit;
+ 	}
+ 
+@@ -2578,7 +2532,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMessage, LPMESSAGE, &res, -1, name_mapi_message, le_mapi_message);
+ 
+@@ -2611,7 +2565,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMessage, LPMESSAGE, &res, -1, name_mapi_message, le_mapi_message);
+ 
+@@ -2645,7 +2599,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &attach_num) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &attach_num) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMessage, LPMESSAGE, &res, -1, name_mapi_message, le_mapi_message);
+ 
+@@ -2675,7 +2629,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &zvalMessage, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &zvalMessage, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMessage, LPMESSAGE, &zvalMessage, -1, name_mapi_message, le_mapi_message);
+ 
+@@ -2701,7 +2655,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|l", &zvalMessage, &attachNum, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl|l", &zvalMessage, &attachNum, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMessage, LPMESSAGE, &zvalMessage, -1, name_mapi_message, le_mapi_message);
+ 
+@@ -2732,7 +2686,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &lgetBytes) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &lgetBytes) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pStream, LPSTREAM, &res, -1, name_istream, le_istream);
+ 
+@@ -2761,7 +2715,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|l", &res, &moveBytes, &seekFlag) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl|l", &res, &moveBytes, &seekFlag) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pStream, LPSTREAM, &res, -1, name_istream, le_istream);
+ 
+@@ -2792,7 +2746,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &newSize) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &newSize) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pStream, LPSTREAM, &res, -1, name_istream, le_istream);
+ 
+@@ -2821,7 +2775,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pStream, LPSTREAM, &res, -1, name_istream, le_istream);
+ 
+@@ -2851,7 +2805,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &pv, &cb) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &pv, &cb) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pStream, LPSTREAM, &res, -1, name_istream, le_istream);
+ 
+@@ -2882,7 +2836,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pStream, LPSTREAM, &res, -1, name_istream, le_istream);
+ 
+@@ -2915,7 +2869,7 @@
+ 
+ 	MAPI_G(hr) = ECMemStream::Create(nullptr, 0, STGM_WRITE | STGM_SHARE_EXCLUSIVE, nullptr, nullptr, nullptr, &~lpStream);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to instantiate new stream object");
++		php_error_docref(NULL, E_WARNING, "Unable to instantiate new stream object");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpStream->QueryInterface(IID_IStream, (void**)&lpIStream);
+@@ -2954,9 +2908,9 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	php_error_docref("mapi_openpropertytostream" TSRMLS_CC, E_DEPRECATED, "Use of mapi_openpropertytostream is deprecated, use mapi_openproperty");
++	php_error_docref("mapi_openpropertytostream", E_DEPRECATED, "Use of mapi_openpropertytostream is deprecated, use mapi_openproperty");
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|ls", &res, &proptag, &flags, &guidStr, &guidLen) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl|ls", &res, &proptag, &flags, &guidStr, &guidLen) == FAILURE) return;
+ 
+ 	zend_list_find(Z_RESVAL_P(res), &type);
+ 	if(type == le_mapi_message) {
+@@ -2968,7 +2922,7 @@
+ 	} else if (type == le_mapi_msgstore) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown resource type");
++		php_error_docref(NULL, E_WARNING, "Unknown resource type");
+ 		goto exit;
+ 	}
+ 
+@@ -2978,7 +2932,7 @@
+ 	} else if (guidLen == sizeof(GUID)) { // assume we have a guid if the length is right
+ 		lpGuid = (LPGUID)guidStr;
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Using the default GUID because the given GUIDs length is not right");
++		php_error_docref(NULL, E_NOTICE, "Using the default GUID because the given GUIDs length is not right");
+ 		lpGuid = (LPGUID)&IID_IStream;
+ 	}
+ 
+@@ -3011,7 +2965,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMessage, LPMESSAGE, &res, -1, name_mapi_message, le_mapi_message);
+ 
+@@ -3037,7 +2991,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &flag) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &flag) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMessage, LPMESSAGE, &res, -1, name_mapi_message, le_mapi_message);
+ 
+@@ -3071,14 +3025,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pAttach, LPATTACH, &res, -1, name_mapi_attachment, le_mapi_attachment);
+ 
+ 	MAPI_G(hr) = pAttach->OpenProperty(PR_ATTACH_DATA_OBJ, &IID_IMessage, 0, ulFlags, (LPUNKNOWN *) &lpMessage);
+ 
+ 	if (FAILED(MAPI_G(hr)))
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fetching attachmentdata as object failed");
++		php_error_docref(NULL, E_WARNING, "Fetching attachmentdata as object failed");
+ 	else
+ 		ZEND_REGISTER_RESOURCE(return_value, lpMessage, le_mapi_message);
+ 
+@@ -3112,7 +3066,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|a", &messageStore, &propNameArray, &guidArray) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|a", &messageStore, &propNameArray, &guidArray) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMessageStore, LPMDB, &messageStore, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+@@ -3124,7 +3078,7 @@
+ 	// get the number of items in the array
+ 	auto hashTotal = zend_hash_num_elements(targetHash);
+ 	if (guidHash && hashTotal != zend_hash_num_elements(guidHash))
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array with the guids is not of the same size as the array with the ids");
++		php_error_docref(NULL, E_WARNING, "The array with the guids is not of the same size as the array with the ids");
+ 
+ 	// allocate memory to use
+ 	MAPI_G(hr) = MAPIAllocateBuffer(sizeof(LPMAPINAMEID) * hashTotal, &~lppNamePropId);
+@@ -3149,7 +3103,7 @@
+ 
+ 		if(guidHash) {
+ 			if (guidEntry[0]->type != IS_STRING || sizeof(GUID) != guidEntry[0]->value.str.len) {
+-				php_error_docref(nullptr TSRMLS_CC, E_WARNING, "The GUID with index number %u that is passed is not of the right length, cannot convert to GUID", i);
++				php_error_docref(nullptr, E_WARNING, "The GUID with index number %u that is passed is not of the right length, cannot convert to GUID", i);
+ 			} else {
+ 				MAPI_G(hr) = KAllocCopy(guidEntry[0]->value.str.val, sizeof(GUID), reinterpret_cast<void **>(&lppNamePropId[i]->lpguid), lppNamePropId);
+ 				if (MAPI_G(hr) != hrSuccess)
+@@ -3177,14 +3131,14 @@
+ 			lppNamePropId[i]->Kind.lID = (LONG) entry[0]->value.dval;
+ 			break;
+ 		default:
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Entry is of an unknown type: %08X", entry[0]->type);
++			php_error_docref(NULL, E_WARNING, "Entry is of an unknown type: %08X", entry[0]->type);
+ 			break;
+ 		}
+ 	}
+ 
+ 	MAPI_G(hr) = lpMessageStore->GetIDsFromNames(hashTotal, lppNamePropId, MAPI_CREATE, &~lpPropTagArray);
+ 	if (FAILED(MAPI_G(hr))) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "GetIDsFromNames failed: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "GetIDsFromNames failed: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	} else {
+@@ -3213,7 +3167,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &res, &propValueArray) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &res, &propValueArray) == FAILURE) return;
+ 
+ 	zend_list_find(Z_RESVAL_P(res), &type);
+ 	if(type == le_mapi_message) {
+@@ -3227,13 +3181,13 @@
+ 	} else if (type == le_mapi_property) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMAPIPROP, &res, -1, name_mapi_property, le_mapi_property);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown resource type");
++		php_error_docref(NULL, E_WARNING, "Unknown resource type");
+ 		goto exit;
+ 	}
+ 
+-	MAPI_G(hr) = PHPArraytoPropValueArray(propValueArray, NULL, &cValues, &~pPropValueArray TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropValueArray(propValueArray, NULL, &cValues, &~pPropValueArray);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert PHP property to MAPI");
++		php_error_docref(NULL, E_WARNING, "Unable to convert PHP property to MAPI");
+ 		goto exit;
+ 	}
+ 
+@@ -3273,7 +3227,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "raar|l", &srcres, &excludeiid, &excludeprops, &dstres, &flags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "raar|l", &srcres, &excludeiid, &excludeprops, &dstres, &flags) == FAILURE) return;
+ 
+ 	zend_list_find(Z_RESVAL_P(srcres), &type);
+ 	if(type == le_mapi_message) {
+@@ -3285,19 +3239,19 @@
+ 	} else if (type == le_mapi_msgstore) {
+ 		ZEND_FETCH_RESOURCE_C(lpSrcObj, LPMDB, &srcres, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown resource type");
++		php_error_docref(NULL, E_WARNING, "Unknown resource type");
+ 		goto exit;
+ 	}
+ 
+-	MAPI_G(hr) = PHPArraytoGUIDArray(excludeiid, NULL, &cExcludeIIDs, &~lpExcludeIIDs TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoGUIDArray(excludeiid, NULL, &cExcludeIIDs, &~lpExcludeIIDs);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse IIDs");
++		php_error_docref(NULL, E_WARNING, "Unable to parse IIDs");
+ 		goto exit;
+ 	}
+ 
+-	MAPI_G(hr) = PHPArraytoPropTagArray(excludeprops, NULL, &~lpExcludeProps TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropTagArray(excludeprops, NULL, &~lpExcludeProps);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse property tag array");
++		php_error_docref(NULL, E_WARNING, "Unable to parse property tag array");
+ 		goto exit;
+ 	}
+ 
+@@ -3315,7 +3269,7 @@
+ 		ZEND_FETCH_RESOURCE_C(lpDstObj, LPMDB, &dstres, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 		lpInterface = &IID_IMsgStore;
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown resource type");
++		php_error_docref(NULL, E_WARNING, "Unknown resource type");
+ 		goto exit;
+ 	}
+ 
+@@ -3345,10 +3299,10 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &flags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &flags) == FAILURE) return;
+ 
+ 	if (res->type != IS_RESOURCE) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unsupported case !IS_RESOURCE.");
++		php_error_docref(NULL, E_WARNING, "Unsupported case !IS_RESOURCE.");
+ 		goto exit;
+ 	}
+ 	zend_list_find(Z_RESVAL_P(res), &type);
+@@ -3363,14 +3317,14 @@
+ 	} else if (type == le_mapi_property) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMAPIPROP, &res, -1, name_mapi_property, le_mapi_property);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource does not exist...");
++		php_error_docref(NULL, E_WARNING, "Resource does not exist...");
+ 		goto exit;
+ 	}
+ 
+ 	MAPI_G(hr) = lpMapiProp->SaveChanges(flags);
+ 
+ 	if (FAILED(MAPI_G(hr)))
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Failed to save object: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Failed to save object: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 	else
+ 		RETVAL_TRUE;
+@@ -3394,7 +3348,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &res, &propTagArray) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &res, &propTagArray) == FAILURE) return;
+ 
+ 	zend_list_find(Z_RESVAL_P(res), &type);
+ 	if(type == le_mapi_message) {
+@@ -3406,13 +3360,13 @@
+ 	} else if (type == le_mapi_msgstore) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource does not exist...");
++		php_error_docref(NULL, E_WARNING, "Resource does not exist...");
+ 		goto exit;
+ 	}
+ 
+-	MAPI_G(hr) = PHPArraytoPropTagArray(propTagArray, NULL, &~lpTagArray TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropTagArray(propTagArray, NULL, &~lpTagArray);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to convert the PHP Array");
++		php_error_docref(NULL, E_WARNING, "Failed to convert the PHP Array");
+ 		goto exit;
+ 	}
+ 
+@@ -3449,7 +3403,7 @@
+ 
+ 	if(ZEND_NUM_ARGS() == 2) {
+ 		// BACKWARD COMPATIBILITY MODE.. this means that we just read the entire stream and return it as a string
+-		if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &proptag) == FAILURE) return;
++		if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &proptag) == FAILURE) return;
+ 
+ 		bBackwardCompatible = true;
+ 
+@@ -3457,7 +3411,7 @@
+ 		guidLen = sizeof(GUID);
+ 		interfaceflags = 0;
+ 		flags = 0;
+-	} else if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlsll", &res, &proptag, &guidStr, &guidLen, &interfaceflags, &flags) == FAILURE) {
++	} else if (zend_parse_parameters(ZEND_NUM_ARGS(), "rlsll", &res, &proptag, &guidStr, &guidLen, &interfaceflags, &flags) == FAILURE) {
+ 		return;
+ 	}
+ 
+@@ -3472,13 +3426,13 @@
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid MAPI resource");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid MAPI resource");
+ 		goto exit;
+ 	}
+ 
+ 	if (guidLen != sizeof(GUID)) {
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified interface is not a valid interface identifier (wrong size)");
++		php_error_docref(NULL, E_WARNING, "Specified interface is not a valid interface identifier (wrong size)");
+ 		goto exit;
+ 	}
+ 
+@@ -3504,14 +3458,14 @@
+ 			// Use emalloc so that it can be returned directly to PHP without copying
+ 			data = (char *)emalloc(stat.cbSize.LowPart);
+ 			if (data == NULL) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to allocate memory");
++				php_error_docref(NULL, E_WARNING, "Unable to allocate memory");
+ 				MAPI_G(hr) = MAPI_E_NOT_ENOUGH_MEMORY;
+ 				goto exit;
+ 			}
+ 
+ 			MAPI_G(hr) = lpStream->Read(data, (ULONG)stat.cbSize.LowPart, &cRead);
+ 			if(MAPI_G(hr)) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to read the data");
++				php_error_docref(NULL, E_WARNING, "Unable to read the data");
+ 				goto exit;
+ 			}
+ 
+@@ -3536,7 +3490,7 @@
+ 	} else if(*lpGUID == IID_IExchangeImportContentsChanges) {
+ 		ZEND_REGISTER_RESOURCE(return_value, lpUnk, le_mapi_importcontentschanges);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The openproperty call succeeded, but the PHP extension is unable to handle the requested interface");
++		php_error_docref(NULL, E_WARNING, "The openproperty call succeeded, but the PHP extension is unable to handle the requested interface");
+ 		lpUnk->Release();
+ 		MAPI_G(hr) = MAPI_E_NO_SUPPORT;
+ 		goto exit;
+@@ -3569,7 +3523,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|a", &res, &tagArray) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|a", &res, &tagArray) == FAILURE) return;
+ 
+ 	zend_list_find(Z_RESVAL_P(res), &type);
+ 	if(type == le_mapi_message) {
+@@ -3589,15 +3543,15 @@
+ 	} else if( type == le_mapi_property) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMAPIPROP, &res, -1, name_mapi_property, le_mapi_property);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid MAPI resource");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid MAPI resource");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+ 
+ 	if(tagArray) {
+-		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropTagArray(tagArray, NULL, &~lpTagArray);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse property tag array");
++			php_error_docref(NULL, E_WARNING, "Unable to parse property tag array");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+@@ -3609,10 +3563,10 @@
+ 	if (FAILED(MAPI_G(hr)))
+ 		goto exit;
+ 
+-	MAPI_G(hr) = PropValueArraytoPHPArray(cValues, lpPropValues, &zval_prop_value TSRMLS_CC);
++	MAPI_G(hr) = PropValueArraytoPHPArray(cValues, lpPropValues, &zval_prop_value);
+ 
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert properties to PHP values");
++		php_error_docref(NULL, E_WARNING, "Unable to convert properties to PHP values");
+ 		goto exit;
+ 	}
+ 
+@@ -3642,13 +3596,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &res, &array) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &res, &array) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(pMDB, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 
+-	MAPI_G(hr) = PHPArraytoPropTagArray(array, NULL, &~lpPropTags TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropTagArray(array, NULL, &~lpPropTags);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert proptag array from PHP array");
++		php_error_docref(NULL, E_WARNING, "Unable to convert proptag array from PHP array");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = pMDB->GetNamesFromIDs(&+lpPropTags, NULL, 0, &cPropNames, &~pPropNames);
+@@ -3714,12 +3668,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &rtfBuffer, &rtfBufferLen) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &rtfBuffer, &rtfBufferLen) == FAILURE) return;
+ 
+ 	// make and fill the stream
+ 	MAPI_G(hr) = CreateStreamOnHGlobal(nullptr, true, &~pStream);
+ 	if (MAPI_G(hr) != hrSuccess || pStream == NULL) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to CreateStreamOnHGlobal: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
++		php_error_docref(nullptr, E_WARNING, "Unable to CreateStreamOnHGlobal: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+ 
+@@ -3728,7 +3682,7 @@
+ 	pStream->Seek(begin, SEEK_SET, NULL);
+ 	MAPI_G(hr) = WrapCompressedRTFStream(pStream, 0, &~deCompressedStream);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to wrap uncompressed stream: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
++		php_error_docref(nullptr, E_WARNING, "Unable to wrap uncompressed stream: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+ 
+@@ -3742,7 +3696,7 @@
+ 	while(1) {
+ 		MAPI_G(hr) = deCompressedStream->Read(htmlbuf.get(), bufsize, &cbRead);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Read from uncompressed stream failed: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
++			php_error_docref(nullptr, E_WARNING, "Read from uncompressed stream failed: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 			goto exit;
+ 		}
+ 
+@@ -3776,7 +3730,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpInbox, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+@@ -3806,7 +3760,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &res, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &res, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFolder, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+@@ -3814,11 +3768,11 @@
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		goto exit;
+ 
+-	MAPI_G(hr) = SRestrictiontoPHPArray(lpRestriction, 0, &restriction TSRMLS_CC);
++	MAPI_G(hr) = SRestrictiontoPHPArray(lpRestriction, 0, &restriction);
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		goto exit;
+ 
+-	MAPI_G(hr) = SBinaryArraytoPHPArray(lpFolderList, &folderlist TSRMLS_CC);
++	MAPI_G(hr) = SBinaryArraytoPHPArray(lpFolderList, &folderlist);
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		goto exit;
+ 
+@@ -3849,14 +3803,14 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "raal", &res, &restriction, &folderlist, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "raal", &res, &restriction, &folderlist, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFolder, LPMAPIFOLDER, &res, -1, name_mapi_folder, le_mapi_folder);
+ 
+-	MAPI_G(hr) = PHPArraytoSRestriction(restriction, NULL, &~lpRestriction TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSRestriction(restriction, NULL, &~lpRestriction);
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		goto exit;
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(folderlist, NULL, &~lpFolderList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(folderlist, NULL, &~lpFolderList);
+ 	if (MAPI_G(hr) != hrSuccess)
+ 		goto exit;
+ 
+@@ -3897,7 +3851,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpRulesTable, LPEXCHANGEMODIFYTABLE, &res, -1, name_mapi_modifytable, le_mapi_modifytable);
+ 
+@@ -3941,12 +3895,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|l", &res, &rows, &ulFlags) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra|l", &res, &rows, &ulFlags) == FAILURE) return;
+ 	ZEND_FETCH_RESOURCE_C(lpRulesTable, LPEXCHANGEMODIFYTABLE, &res, -1, name_mapi_modifytable, le_mapi_modifytable);
+ 
+-	MAPI_G(hr) = PHPArraytoRowList(rows, NULL, &lpRowList TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoRowList(rows, NULL, &lpRowList);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse rowlist");
++		php_error_docref(NULL, E_WARNING, "Unable to parse rowlist");
+ 		goto exit;
+ 	}
+ 
+@@ -3990,7 +3944,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rssss|ll", &res,
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rssss|ll", &res,
+ 							&lpszUsername, &ulUsernameLen,
+ 							&lpszPassword, &ulPassword,
+ 							&lpszFullname, &ulFullname,
+@@ -4000,7 +3954,7 @@
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 
+@@ -4047,12 +4001,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsssssll", &res, &lpUserId, &cbUserId, &lpszUsername, &ulUsername, &lpszFullname, &ulFullname, &lpszEmail, &ulEmail, &lpszPassword, &ulPassword, &ulIsNonactive, &ulIsAdmin) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rsssssll", &res, &lpUserId, &cbUserId, &lpszUsername, &ulUsername, &lpszFullname, &ulFullname, &lpszEmail, &ulEmail, &lpszPassword, &ulPassword, &ulIsNonactive, &ulIsAdmin) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 
+@@ -4100,24 +4054,24 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszUserName, &ulUserName) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszUserName, &ulUserName) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveUserName((TCHAR*)lpszUserName, 0, &cbUserId, &~lpUserId);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Cannot resolve/delete user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Cannot resolve/delete user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+ 
+ 	MAPI_G(hr) = lpServiceAdmin->DeleteUser(cbUserId, lpUserId);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to delete user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to delete user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -4148,17 +4102,17 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rls", &res, &ulStoreType, &lpUserId, &cbUserId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rls", &res, &ulStoreType, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->CreateStore(ulStoreType, cbUserId, lpUserId, &cbStoreID, &~lpStoreID, &cbRootID, &~lpRootID);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to modify user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to modify user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -4196,12 +4150,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|s", &res, &lpCompanyId, &cbCompanyId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|s", &res, &lpCompanyId, &cbCompanyId) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpSecurity), &~lpSecurity);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpSecurity->GetUserList(cbCompanyId, lpCompanyId, 0, &nUsers, &~lpUsers);
+@@ -4252,12 +4206,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetQuota(cbUserId, lpUserId, false, &~lpQuota);
+@@ -4304,12 +4258,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsa", &res, &lpUserId, &cbUserId, &array) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rsa", &res, &lpUserId, &cbUserId, &array) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetQuota(cbUserId, lpUserId, false, &~lpQuota);
+@@ -4376,23 +4330,23 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszUsername, &ulUsername) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszUsername, &ulUsername) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveUserName((TCHAR*)lpszUsername, 0, (ULONG*)&cbUserId, &~lpUserId);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to resolve user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to resolve user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetUser(cbUserId, lpUserId, 0, &~lpUsers);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to get user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to get user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -4434,17 +4388,17 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetUser(cbUserId, lpUserId, 0, &~lpUsers);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to get user: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to get user: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -4480,18 +4434,18 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &sGroup.lpszGroupname, &cbGroupname) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &sGroup.lpszGroupname, &cbGroupname) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	sGroup.lpszFullname = sGroup.lpszGroupname;
+ 	MAPI_G(hr) = lpServiceAdmin->CreateGroup(&sGroup, 0, (ULONG*)&cbGroupId, &~lpGroupId);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to create group: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to create group: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -4519,17 +4473,17 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszGroupname, &cbGroupname) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszGroupname, &cbGroupname) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveGroupName((TCHAR*)lpszGroupname, 0, (ULONG*)&cbGroupId, &~lpGroupId);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Group not found: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Group not found: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -4562,12 +4516,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpGroupId, &cbGroupId, &lpUserId, &cbUserId) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpGroupId, &cbGroupId, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->AddGroupUser(cbGroupId, lpGroupId, cbUserId, lpUserId);
+@@ -4598,12 +4552,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpGroupId, &cbGroupId, &lpUserId, &cbUserId) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpGroupId, &cbGroupId, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->DeleteGroupUser(cbGroupId, lpGroupId, cbUserId, lpUserId);
+@@ -4636,12 +4590,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpGroupId, &cbGroupId, &lpszGroupname, &cbGroupname) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpGroupId, &cbGroupId, &lpszGroupname, &cbGroupname) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	sGroup.sGroupId.cb = cbGroupId;
+@@ -4676,12 +4630,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpGroupId, &cbGroupId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpGroupId, &cbGroupId) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetGroup(cbGroupId, lpGroupId, 0, &~lpsGroup);
+@@ -4716,17 +4670,17 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszGroupname, &ulGroupname) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszGroupname, &ulGroupname) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveGroupName((TCHAR*)lpszGroupname, 0, (ULONG*)&cbGroupId, &~lpGroupId);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to resolve group: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to resolve group: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -4763,12 +4717,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|s", &res, &lpCompanyId, &cbCompanyId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|s", &res, &lpCompanyId, &cbCompanyId) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetGroupList(cbCompanyId, lpCompanyId, 0, &ulGroups, &~lpsGroups);
+@@ -4811,12 +4765,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpUserId, &cbUserId) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetGroupListOfUser(cbUserId, lpUserId, 0, &ulGroups, &~lpsGroups);
+@@ -4859,12 +4813,12 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpGroupId, &cbGroupId) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpGroupId, &cbGroupId) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetUserListOfGroup(cbGroupId, lpGroupId, 0, &ulUsers, &~lpsUsers);
+@@ -4908,18 +4862,18 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &sCompany.lpszCompanyname, &cbCompanyname) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &sCompany.lpszCompanyname, &cbCompanyname) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->CreateCompany(&sCompany, 0, (ULONG*)&cbCompanyId, &~lpCompanyId);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to create company: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to create company: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -4947,18 +4901,18 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszCompanyname, &cbCompanyname) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszCompanyname, &cbCompanyname) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		 php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		 goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveCompanyName((TCHAR*)lpszCompanyname, 0, (ULONG*)&cbCompanyId, &~lpCompanyId);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Company not found: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Company not found: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -4991,13 +4945,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetCompany(cbCompanyId, lpCompanyId, 0, &~lpsCompany);
+@@ -5032,18 +4986,18 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpszCompanyname, &ulCompanyname) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpszCompanyname, &ulCompanyname) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->ResolveCompanyName((TCHAR*)lpszCompanyname, 0, (ULONG*)&cbCompanyId, &~lpCompanyId);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to resolve company: %s (%x)",
++		php_error_docref(nullptr, E_WARNING, "Unable to resolve company: %s (%x)",
+ 			GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 		goto exit;
+ 	}
+@@ -5077,13 +5031,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &res) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &res) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpSecurity), &~lpSecurity);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpSecurity->GetCompanyList(0, &nCompanies, &~lpCompanies);
+@@ -5121,13 +5075,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpSetCompanyId, &cbSetCompanyId, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpSetCompanyId, &cbSetCompanyId, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->AddCompanyToRemoteViewList(cbSetCompanyId, lpSetCompanyId, cbCompanyId, lpCompanyId);
+@@ -5157,13 +5111,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpSetCompanyId, &cbSetCompanyId, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpSetCompanyId, &cbSetCompanyId, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->DelCompanyFromRemoteViewList(cbSetCompanyId, lpSetCompanyId, cbCompanyId, lpCompanyId);
+@@ -5195,13 +5149,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetRemoteViewList(cbCompanyId, lpCompanyId, 0, &ulCompanies, &~lpsCompanies);
+@@ -5239,13 +5193,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpUserId, &cbUserId, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpUserId, &cbUserId, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->AddUserToRemoteAdminList(cbUserId, lpUserId, cbCompanyId, lpCompanyId);
+@@ -5275,13 +5229,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &res, &lpUserId, &cbUserId, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rss", &res, &lpUserId, &cbUserId, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->DelUserFromRemoteAdminList(cbUserId, lpUserId, cbCompanyId, lpCompanyId);
+@@ -5313,13 +5267,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpCompanyId, &cbCompanyId) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetRemoteAdminList(cbCompanyId, lpCompanyId, 0, &ulUsers, &~lpsUsers);
+@@ -5358,13 +5312,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rssl", &res, &lpCompanyId, &cbCompanyId, &lpRecipientId, &cbRecipientId, &ulType) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rssl", &res, &lpCompanyId, &cbCompanyId, &lpRecipientId, &cbRecipientId, &ulType) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->AddQuotaRecipient(cbCompanyId, lpCompanyId, cbRecipientId, lpRecipientId, ulType);
+@@ -5395,13 +5349,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rssl", &res, &lpCompanyId, &cbCompanyId, &lpRecipientId, &cbRecipientId, &ulType) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rssl", &res, &lpCompanyId, &cbCompanyId, &lpRecipientId, &cbRecipientId, &ulType) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->DeleteQuotaRecipient(cbCompanyId, lpCompanyId, cbRecipientId, lpRecipientId, ulType);
+@@ -5433,13 +5387,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &res, &lpObjectId, &cbObjectId) == FAILURE)
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &res, &lpObjectId, &cbObjectId) == FAILURE)
+ 	return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpMsgStore, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = GetECObject(lpMsgStore, iid_of(lpServiceAdmin), &~lpServiceAdmin);
+ 	if (MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano store");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano store");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpServiceAdmin->GetQuotaRecipients(cbObjectId, lpObjectId, 0, &ulUsers, &~lpsUsers);
+@@ -5483,7 +5437,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res, &ulType) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &res, &ulType) == FAILURE) return;
+ 
+ 	zend_list_find(Z_RESVAL_P(res), &type);
+ 	if(type == le_mapi_message) {
+@@ -5495,13 +5449,13 @@
+ 	} else if (type == le_mapi_msgstore) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid MAPI resource");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid MAPI resource");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = GetECObject(lpMapiProp, iid_of(lpSecurity), &~lpSecurity);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano object");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano object");
+ 		goto exit;
+ 	}
+ 	MAPI_G(hr) = lpSecurity->GetPermissionRules(ulType, &cPerms, &~lpECPerms);
+@@ -5548,7 +5502,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &res, &perms) == FAILURE) return;
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &res, &perms) == FAILURE) return;
+ 
+ 	zend_list_find(Z_RESVAL_P(res), &type);
+ 	if(type == le_mapi_message) {
+@@ -5560,14 +5514,14 @@
+ 	} else if (type == le_mapi_msgstore) {
+ 		ZEND_FETCH_RESOURCE_C(lpMapiProp, LPMDB, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resource is not a valid MAPI resource");
++		php_error_docref(NULL, E_WARNING, "Resource is not a valid MAPI resource");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+ 
+ 	MAPI_G(hr) = GetECObject(lpMapiProp, iid_of(lpSecurity), &~lpSecurity);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Specified object is not a Kopano object");
++		php_error_docref(NULL, E_WARNING, "Specified object is not a Kopano object");
+ 		goto exit;
+ 	}
+ 	target_hash = HASH_OF(perms);
+@@ -5648,7 +5602,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|r", &resSession, &resStore) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r|r", &resSession, &resStore) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpSession, IMAPISession*, &resSession, -1, name_mapi_session, le_mapi_session);
+ 	if (resStore != nullptr)
+@@ -5682,7 +5636,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resFBSupport) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resFBSupport) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFBSupport, IFreeBusySupport*, &resFBSupport, -1, name_fb_support, le_freebusy_support);
+ 
+@@ -5715,7 +5669,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &resFBSupport,&resUsers) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &resFBSupport,&resUsers) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFBSupport, IFreeBusySupport*, &resFBSupport, -1, name_fb_support, le_freebusy_support);
+ 
+@@ -5792,7 +5746,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &resFBSupport,&resUsers) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &resFBSupport,&resUsers) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFBSupport, IFreeBusySupport*, &resFBSupport, -1, name_fb_support, le_freebusy_support);
+ 
+@@ -5866,7 +5820,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &resFBData, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &resFBData, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFBData, IFreeBusyData*, &resFBData, -1, name_fb_data, le_freebusy_data);
+ 
+@@ -5895,7 +5849,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resFBData) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resFBData) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFBData, IFreeBusyData*, &resFBData, -1, name_fb_data, le_freebusy_data);
+ 
+@@ -5922,7 +5876,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &resFBData, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &resFBData, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFBData, IFreeBusyData*, &resFBData, -1, name_fb_data, le_freebusy_data);
+ 	MAPI_G(hr) = lpFBData->SetFBRange(UnixTimeToRTime(ulUnixStart), UnixTimeToRTime(ulUnixEnd));
+@@ -5946,7 +5900,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resEnumBlock) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resEnumBlock) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpEnumBlock, IEnumFBBlock*, &resEnumBlock, -1, name_fb_enumblock, le_freebusy_enumblock);
+ 
+@@ -5975,7 +5929,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &resEnumBlock, &cElt) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &resEnumBlock, &cElt) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpEnumBlock, IEnumFBBlock*, &resEnumBlock, -1, name_fb_enumblock, le_freebusy_enumblock);
+ 
+@@ -6015,7 +5969,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &resEnumBlock, &ulSkip) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &resEnumBlock, &ulSkip) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpEnumBlock, IEnumFBBlock*, &resEnumBlock, -1, name_fb_enumblock, le_freebusy_enumblock);
+ 
+@@ -6044,7 +5998,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &resEnumBlock, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &resEnumBlock, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpEnumBlock, IEnumFBBlock*, &resEnumBlock, -1, name_fb_enumblock, le_freebusy_enumblock);
+ 
+@@ -6077,7 +6031,7 @@
+ 	char *uid_cstr = nullptr;
+ 	zval *res_addrbook = nullptr, *res_enumblock = nullptr;
+ 	time_t start = 0, end = 0;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrlllsss", &res_addrbook, &res_enumblock, &req_count, &start, &end, &organizer_cstr, &organizer_len, &user_cstr, &user_len, &uid_cstr, &uid_len) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrlllsss", &res_addrbook, &res_enumblock, &req_count, &start, &end, &organizer_cstr, &organizer_len, &user_cstr, &user_len, &uid_cstr, &uid_len) == FAILURE)
+ 		return;
+ 
+ 	IAddrBook *addrbook = nullptr;
+@@ -6134,7 +6088,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &resFBUpdate, &aBlocks) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &resFBUpdate, &aBlocks) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFBUpdate, IFreeBusyUpdate*, &resFBUpdate, -1, name_fb_update, le_freebusy_update);
+ 
+@@ -6192,7 +6146,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resFBUpdate) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resFBUpdate) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFBUpdate, IFreeBusyUpdate*, &resFBUpdate, -1, name_fb_update, le_freebusy_update);
+ 
+@@ -6223,7 +6177,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &resFBUpdate, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &resFBUpdate, &ulUnixStart, &ulUnixEnd) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpFBUpdate, IFreeBusyUpdate*, &resFBUpdate, -1, name_fb_update, le_freebusy_update);
+ 
+@@ -6268,7 +6222,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrlzzzzl", &resExportChanges, &resStream, &ulFlags, &resImportChanges, &aRestrict, &aIncludeProps, &aExcludeProps, &ulBuffersize) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rrlzzzzl", &resExportChanges, &resStream, &ulFlags, &resImportChanges, &aRestrict, &aIncludeProps, &aExcludeProps, &ulBuffersize) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpExportChanges, IExchangeExportChanges *, &resExportChanges, -1, name_mapi_exportchanges, le_mapi_exportchanges);
+ 
+@@ -6279,14 +6233,14 @@
+ 		} else if(type == le_mapi_importhierarchychanges) {
+ 			ZEND_FETCH_RESOURCE_C(lpImportChanges, IUnknown *, &resImportChanges, -1, name_mapi_importhierarchychanges, le_mapi_importhierarchychanges);
+ 		} else {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "The importer must be either a contents importer or a hierarchy importer object");
++			php_error_docref(NULL, E_WARNING, "The importer must be either a contents importer or a hierarchy importer object");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+ 	} else if(Z_TYPE_P(resImportChanges) == IS_BOOL && !resImportChanges->value.lval) {
+ 		lpImportChanges = NULL;
+ 	} else {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "The importer must be an actual importer resource, or FALSE");
++		php_error_docref(NULL, E_WARNING, "The importer must be an actual importer resource, or FALSE");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -6298,23 +6252,23 @@
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			goto exit;
+ 
+-		MAPI_G(hr) = PHPArraytoSRestriction(aRestrict, lpRestrict, lpRestrict TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(aRestrict, lpRestrict, lpRestrict);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			goto exit;
+ 	}
+ 
+ 	if(Z_TYPE_P(aIncludeProps) == IS_ARRAY) {
+-		MAPI_G(hr) = PHPArraytoPropTagArray(aIncludeProps, NULL, &~lpIncludeProps TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropTagArray(aIncludeProps, NULL, &~lpIncludeProps);
+ 		if(MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse includeprops array");
++			php_error_docref(NULL, E_WARNING, "Unable to parse includeprops array");
+ 			goto exit;
+ 		}
+ 	}
+ 
+ 	if(Z_TYPE_P(aExcludeProps) == IS_ARRAY) {
+-		MAPI_G(hr) = PHPArraytoPropTagArray(aExcludeProps, NULL, &~lpExcludeProps TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropTagArray(aExcludeProps, NULL, &~lpExcludeProps);
+ 		if(MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse excludeprops array");
++			php_error_docref(NULL, E_WARNING, "Unable to parse excludeprops array");
+ 			goto exit;
+ 		}
+ 	}
+@@ -6342,7 +6296,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resExportChanges) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resExportChanges) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpExportChanges, IExchangeExportChanges *, &resExportChanges, -1, name_mapi_exportchanges, le_mapi_exportchanges);
+ 
+@@ -6376,7 +6330,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr", &resExportChanges, &resStream) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "rr", &resExportChanges, &resStream) == FAILURE) return;
+ 
+     ZEND_FETCH_RESOURCE_C(lpExportChanges, IExchangeExportChanges *, &resExportChanges, -1, name_mapi_exportchanges, le_mapi_exportchanges);
+     ZEND_FETCH_RESOURCE_C(lpStream, IStream *, &resStream, -1, name_istream, le_istream);
+@@ -6404,13 +6358,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &resExportChanges) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "r", &resExportChanges) == FAILURE) return;
+ 
+     ZEND_FETCH_RESOURCE_C(lpExportChanges, IExchangeExportChanges *, &resExportChanges, -1, name_mapi_exportchanges, le_mapi_exportchanges);
+ 
+ 	MAPI_G(hr) = lpExportChanges->QueryInterface(IID_IECExportChanges, &~lpECExportChanges);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "ExportChanges does not support IECExportChanges interface which is required for the getchangecount call");
++		php_error_docref(NULL, E_WARNING, "ExportChanges does not support IECExportChanges interface which is required for the getchangecount call");
+ 		goto exit;
+ 	}
+ 
+@@ -6437,7 +6391,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrl", &resImportContentsChanges, &resStream, &ulFlags) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rrl", &resImportContentsChanges, &resStream, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpImportContentsChanges, IExchangeImportContentsChanges *, &resImportContentsChanges, -1, name_mapi_importcontentschanges, le_mapi_importcontentschanges);
+ 	ZEND_FETCH_RESOURCE_C(lpStream, IStream *, &resStream, -1, name_istream, le_istream);
+@@ -6466,7 +6420,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|r", &resImportContentsChanges, &resStream) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "r|r", &resImportContentsChanges, &resStream) == FAILURE) return;
+ 
+     ZEND_FETCH_RESOURCE_C(lpImportContentsChanges, IExchangeImportContentsChanges *, &resImportContentsChanges, -1, name_mapi_importcontentschanges, le_mapi_importcontentschanges);
+ 	if (resStream != NULL) {
+@@ -6500,13 +6454,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ralz", &resImportContentsChanges, &resProps, &ulFlags, &resMessage) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "ralz", &resImportContentsChanges, &resProps, &ulFlags, &resMessage) == FAILURE) return;
+ 
+     ZEND_FETCH_RESOURCE_C(lpImportContentsChanges, IExchangeImportContentsChanges *, &resImportContentsChanges, -1, name_mapi_importcontentschanges, le_mapi_importcontentschanges);
+ 
+-	MAPI_G(hr) = PHPArraytoPropValueArray(resProps, NULL, &cValues, &~lpProps TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropValueArray(resProps, NULL, &cValues, &~lpProps);
+     if(MAPI_G(hr) != hrSuccess) {
+-    	php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse property array");
++    	php_error_docref(NULL, E_WARNING, "Unable to parse property array");
+     	goto exit;
+ 	}
+ 
+@@ -6534,13 +6488,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rla", &resImportContentsChanges, &ulFlags, &resMessages) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rla", &resImportContentsChanges, &ulFlags, &resMessages) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpImportContentsChanges, IExchangeImportContentsChanges *, &resImportContentsChanges, -1, name_mapi_importcontentschanges, le_mapi_importcontentschanges);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(resMessages, NULL, &~lpMessages TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(resMessages, NULL, &~lpMessages);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse message list");
++		php_error_docref(NULL, E_WARNING, "Unable to parse message list");
+ 	    goto exit;
+ 	}
+ 
+@@ -6566,13 +6520,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &resImportContentsChanges, &resReadStates) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &resImportContentsChanges, &resReadStates) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpImportContentsChanges, IExchangeImportContentsChanges *, &resImportContentsChanges, -1, name_mapi_importcontentschanges, le_mapi_importcontentschanges);
+ 
+-	MAPI_G(hr) = PHPArraytoReadStateArray(resReadStates, NULL, &cValues, &~lpReadStates TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoReadStateArray(resReadStates, NULL, &cValues, &~lpReadStates);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse readstates");
++		php_error_docref(NULL, E_WARNING, "Unable to parse readstates");
+ 	    goto exit;
+ 	}
+ 
+@@ -6608,7 +6562,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsssss", 	&resImportContentsChanges,
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rsssss", 	&resImportContentsChanges,
+ 																	&pbSourceKeySrcFolder, &cbSourceKeySrcFolder,
+ 																	&pbSourceKeySrcMessage, &cbSourceKeySrcMessage,
+ 																	&pbPCLMessage, &cbPCLMessage,
+@@ -6639,7 +6593,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrl", &resImportHierarchyChanges, &resStream, &ulFlags) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rrl", &resImportHierarchyChanges, &resStream, &ulFlags) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpImportHierarchyChanges, IExchangeImportHierarchyChanges *, &resImportHierarchyChanges, -1, name_mapi_importhierarchychanges, le_mapi_importhierarchychanges);
+ 	ZEND_FETCH_RESOURCE_C(lpStream, IStream *, &resStream, -1, name_istream, le_istream);
+@@ -6667,7 +6621,7 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|r", &resImportHierarchyChanges, &resStream) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "r|r", &resImportHierarchyChanges, &resStream) == FAILURE) return;
+ 
+     ZEND_FETCH_RESOURCE_C(lpImportHierarchyChanges, IExchangeImportHierarchyChanges *, &resImportHierarchyChanges, -1, name_mapi_importhierarchychanges, le_mapi_importhierarchychanges);
+ 	if (resStream != NULL) {
+@@ -6698,13 +6652,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &resImportHierarchyChanges, &resProps) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "ra", &resImportHierarchyChanges, &resProps) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpImportHierarchyChanges, IExchangeImportHierarchyChanges *, &resImportHierarchyChanges, -1, name_mapi_importhierarchychanges, le_mapi_importhierarchychanges);
+ 
+-	MAPI_G(hr) = PHPArraytoPropValueArray(resProps, NULL, &cValues, &~lpProps TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoPropValueArray(resProps, NULL, &cValues, &~lpProps);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert properties in properties array");
++		php_error_docref(NULL, E_WARNING, "Unable to convert properties in properties array");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -6732,13 +6686,13 @@
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rla", &resImportHierarchyChanges, &ulFlags, &resFolders) == FAILURE) return;
++	if(zend_parse_parameters(ZEND_NUM_ARGS(), "rla", &resImportHierarchyChanges, &ulFlags, &resFolders) == FAILURE) return;
+ 
+ 	ZEND_FETCH_RESOURCE_C(lpImportHierarchyChanges, IExchangeImportHierarchyChanges *, &resImportHierarchyChanges, -1, name_mapi_importhierarchychanges, le_mapi_importhierarchychanges);
+ 
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(resFolders, NULL, &~lpFolders TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(resFolders, NULL, &~lpFolders);
+ 	if(MAPI_G(hr) != hrSuccess) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse folder list");
++		php_error_docref(NULL, E_WARNING, "Unable to parse folder list");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		goto exit;
+ 	}
+@@ -6778,9 +6732,9 @@
+     RETVAL_FALSE;
+     MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &objImportContentsChanges) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "o", &objImportContentsChanges) == FAILURE) return;
+ 
+-    lpImportContentsChanges = new ECImportContentsChangesProxy(objImportContentsChanges TSRMLS_CC);
++    lpImportContentsChanges = new ECImportContentsChangesProxy(objImportContentsChanges);
+ 
+     // Simply return the wrapped object
+ 	ZEND_REGISTER_RESOURCE(return_value, lpImportContentsChanges, le_mapi_importcontentschanges);
+@@ -6801,9 +6755,9 @@
+     RETVAL_FALSE;
+     MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &objImportHierarchyChanges) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "o", &objImportHierarchyChanges) == FAILURE) return;
+ 
+-    lpImportHierarchyChanges = new ECImportHierarchyChangesProxy(objImportHierarchyChanges TSRMLS_CC);
++    lpImportHierarchyChanges = new ECImportHierarchyChangesProxy(objImportHierarchyChanges);
+ 
+     // Simply return the wrapped object
+ 	ZEND_REGISTER_RESOURCE(return_value, lpImportHierarchyChanges, le_mapi_importhierarchychanges);
+@@ -6836,7 +6790,7 @@
+     RETVAL_FALSE;
+     MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+     
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrra", &resSession, &resAddrBook, &resMessage, &resOptions) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "rrra", &resSession, &resAddrBook, &resMessage, &resOptions) == FAILURE) return;
+     
+     ZEND_FETCH_RESOURCE_C(lpMAPISession, IMAPISession *, &resSession, -1, name_mapi_session, le_mapi_session);
+     ZEND_FETCH_RESOURCE_C(lpAddrBook, IAddrBook *, &resAddrBook, -1, name_mapi_addrbook, le_mapi_addrbook);
+@@ -6887,7 +6841,7 @@
+     RETVAL_FALSE;
+     MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+     
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrrrsa", &resSession, &resStore, &resAddrBook, &resMessage, &szString, &cbString, &resOptions) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "rrrrsa", &resSession, &resStore, &resAddrBook, &resMessage, &szString, &cbString, &resOptions) == FAILURE) return;
+     
+     ZEND_FETCH_RESOURCE_C(lpMAPISession, IMAPISession *, &resSession, -1, name_mapi_session, le_mapi_session);
+     ZEND_FETCH_RESOURCE_C(lpMsgStore, IMsgStore *, &resStore, -1, name_mapi_msgstore, le_mapi_msgstore);
+@@ -6931,7 +6885,7 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrrrsb",
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrrrsb",
+ 	    &resSession, &resStore, &resAddrBook, &resMessage, &szString,
+ 	    &cbString, &noRecipients) == FAILURE)
+ 		return;
+@@ -6994,7 +6948,7 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrra",
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrra",
+ 	    &resSession, &resAddrBook, &resMessage, &resOptions) == FAILURE)
+ 		return;
+ 	ZEND_FETCH_RESOURCE_C(lpMAPISession, IMAPISession *, &resSession, -1, name_mapi_session, le_mapi_session);
+@@ -7031,7 +6985,7 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrrs",
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrrs",
+ 	    &resSession, &resStore, &resMessage, &szString,
+ 	    &cbString) == FAILURE)
+ 		return;
+@@ -7073,7 +7027,7 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrra",
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrra",
+ 	    &resSession, &resAddrBook, &resMessage, &resOptions) == FAILURE)
+ 		return;
+ 	ZEND_FETCH_RESOURCE_C(lpMAPISession, IMAPISession *, &resSession, -1, name_mapi_session, le_mapi_session);
+@@ -7104,7 +7058,7 @@
+ 
+ 	RETVAL_FALSE;
+ 	
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &szExClass, &cbExClass) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "s", &szExClass, &cbExClass) == FAILURE) return;
+     
+     if (zend_hash_find(CG(class_table), szExClass, cbExClass+1, (void **) &ce) == SUCCESS) {
+         MAPI_G(exceptions_enabled) = true;
+@@ -7127,7 +7081,7 @@
+     
+     RETVAL_FALSE;
+     
+-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &szFeature, &cbFeature) == FAILURE) return;
++    if(zend_parse_parameters(ZEND_NUM_ARGS(), "s", &szFeature, &cbFeature) == FAILURE) return;
+ 	for (size_t i = 0; i < ARRAY_SIZE(features); ++i)
+         if(strcasecmp(features[i], szFeature) == 0) {
+             RETVAL_TRUE;
+@@ -7141,7 +7095,7 @@
+ 	PMEASURE_FUNC;
+ 	zval *res = nullptr, *outstr = nullptr;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz", &res, &outstr) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rz", &res, &outstr) == FAILURE)
+ 		return;
+ 	IMAPISession *ses;
+ 	ZEND_FETCH_RESOURCE_C(ses, IMAPISession *, &res, -1, name_mapi_session, le_mapi_session);
+@@ -7158,10 +7112,10 @@
+ 	PMEASURE_FUNC;
+ 	zval *data, *res;
+ 
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &data, &res) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "zz", &data, &res) == FAILURE)
+ 		return;
+ 	if (Z_TYPE_P(data) != IS_STRING) {
+-		php_error_docref(NULL TSRMLS_CC, E_ERROR, "kc_session_restore() expects parameter 1 to be string, but something else was given");
++		php_error_docref(NULL, E_ERROR, "kc_session_restore() expects parameter 1 to be string, but something else was given");
+ 		RETVAL_LONG(MAPI_G(hr) = MAPI_E_INVALID_PARAMETER);
+ 		LOG_END();
+ 		return;
+@@ -7185,12 +7139,12 @@
+ 
+ 	RETVAL_FALSE;
+ 	MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|s", &res, &eid, &eid_size) == FAILURE)
++	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|s", &res, &eid, &eid_size) == FAILURE)
+ 		return;
+ 	ZEND_FETCH_RESOURCE_C(store, IMsgStore *, &res, -1, name_mapi_msgstore, le_mapi_msgstore);
+ 	MAPI_G(hr) = store->AbortSubmit(eid_size, eid, 0);
+ 	if (FAILED(MAPI_G(hr)))
+-		php_error_docref(nullptr TSRMLS_CC, E_WARNING, "Unable to abort submit: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
++		php_error_docref(nullptr, E_WARNING, "Unable to abort submit: %s (%x)", GetMAPIErrorMessage(MAPI_G(hr)), MAPI_G(hr));
+ 	else
+ 		RETVAL_TRUE;
+ 	LOG_END();
+--- a/php-ext/typeconversion.cpp
++++ b/php-ext/typeconversion.cpp
+@@ -66,7 +66,7 @@
+ * is used with DeleteMessages();
+ *
+ */
+-HRESULT PHPArraytoSBinaryArray(zval * entryid_array , void *lpBase, SBinaryArray *lpBinaryArray TSRMLS_DC)
++HRESULT PHPArraytoSBinaryArray(zval * entryid_array , void *lpBase, SBinaryArray *lpBinaryArray)
+ {
+ 	// local
+ 	HashTable		*target_hash = NULL;
+@@ -78,7 +78,7 @@
+ 
+ 	target_hash = HASH_OF(entryid_array);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoSBinaryArray");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoSBinaryArray");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return MAPI_G(hr);
+ 	}
+@@ -111,7 +111,7 @@
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT PHPArraytoSBinaryArray(zval * entryid_array , void *lpBase, SBinaryArray **lppBinaryArray TSRMLS_DC)
++HRESULT PHPArraytoSBinaryArray(zval * entryid_array , void *lpBase, SBinaryArray **lppBinaryArray)
+ {
+ 	SBinaryArray *lpBinaryArray = NULL;
+ 	
+@@ -119,7 +119,7 @@
+ 	if(MAPI_G(hr) != hrSuccess)
+ 		return MAPI_G(hr);
+ 		
+-	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, lpBase ? lpBase : lpBinaryArray, lpBinaryArray TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSBinaryArray(entryid_array, lpBase ? lpBase : lpBinaryArray, lpBinaryArray);
+ 	if(MAPI_G(hr) != hrSuccess) {
+ 		MAPI_FREE(lpBase, lpBinaryArray);
+ 		return MAPI_G(hr);
+@@ -130,7 +130,7 @@
+ }
+ 
+ HRESULT SBinaryArraytoPHPArray(const SBinaryArray *lpBinaryArray,
+-    zval **ppvalRet TSRMLS_DC)
++    zval **ppvalRet)
+ {
+ 	unsigned int i = 0;
+ 	
+@@ -161,7 +161,7 @@
+ *
+ * NOTE: The TABLE_SORT_COMBINE is not (yet) implemented, it should work but is not tested
+ */
+-HRESULT PHPArraytoSortOrderSet(zval * sortorder_array, void *lpBase, LPSSortOrderSet *lppSortOrderSet TSRMLS_DC)
++HRESULT PHPArraytoSortOrderSet(zval * sortorder_array, void *lpBase, LPSSortOrderSet *lppSortOrderSet)
+ {
+ 	// local
+ 	LPSSortOrderSet lpSortOrderSet = NULL;
+@@ -172,7 +172,7 @@
+ 
+ 	target_hash = HASH_OF(sortorder_array);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoSortOrderSet");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoSortOrderSet");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(Z_ARRVAL_P(sortorder_array));
+@@ -213,7 +213,7 @@
+ * The caller is responsible to free the memory using MAPIFreeBuffer
+ */
+ 
+-HRESULT PHPArraytoPropTagArray(zval * prop_value_array, void *lpBase, LPSPropTagArray *lppPropTagArray TSRMLS_DC)
++HRESULT PHPArraytoPropTagArray(zval * prop_value_array, void *lpBase, LPSPropTagArray *lppPropTagArray)
+ {
+ 	// return value
+ 	LPSPropTagArray lpPropTagArray = NULL;
+@@ -224,7 +224,7 @@
+ 
+ 	target_hash = HASH_OF(prop_value_array);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoPropTagArray");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoPropTagArray");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(target_hash);
+@@ -250,7 +250,7 @@
+ /*
+ * Converts a PHP property value array to a MAPI property value structure
+ */
+-HRESULT PHPArraytoPropValueArray(zval* phpArray, void *lpBase, ULONG *lpcValues, LPSPropValue *lppPropValArray TSRMLS_DC)
++HRESULT PHPArraytoPropValueArray(zval* phpArray, void *lpBase, ULONG *lpcValues, LPSPropValue *lppPropValArray)
+ {
+ 	// return value
+ 	LPSPropValue	lpPropValue	= NULL;
+@@ -268,13 +268,13 @@
+ 	LPSPropValue	lpPropTmp = NULL;
+ 
+ 	if (!phpArray) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No phpArray in PHPArraytoPropValueArray");
++		php_error_docref(NULL, E_WARNING, "No phpArray in PHPArraytoPropValueArray");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+ 	target_hash = HASH_OF(phpArray);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoPropValueArray");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoPropValueArray");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(target_hash);
+@@ -297,7 +297,7 @@
+ 		zend_hash_get_current_data_ex(target_hash, reinterpret_cast<void **>(&entry), &thpos);
+ 		if (zend_hash_get_current_key_ex(target_hash, &keyIndex,
+ 		    nullptr, &numIndex, 0, &thpos) != HASH_KEY_IS_LONG) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "PHPArraytoPropValueArray: expected array to be int-keyed");
++			php_error_docref(nullptr, E_WARNING, "PHPArraytoPropValueArray: expected array to be int-keyed");
+ 			continue;
+ 		}
+ 
+@@ -358,7 +358,7 @@
+ 		case PT_CLSID:
+ 			convert_to_string_ex(entry);
+ 			if (entry[0]->value.str.len != sizeof(GUID)) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "GUID must be 16 bytes");
++				php_error_docref(NULL, E_WARNING, "GUID must be 16 bytes");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			MAPI_G(hr) = KAllocCopy(entry[0]->value.str.val, sizeof(GUID), reinterpret_cast<void **>(&lpPropValue[cvalues].Value.lpguid), lpBase != nullptr ? lpBase : lpPropValue);
+@@ -371,7 +371,7 @@
+ 	{ \
+ 		dataHash = HASH_OF(entry[0]); \
+ 		if (!dataHash) { \
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "No MV dataHash"); \
++			php_error_docref(NULL, E_WARNING, "No MV dataHash"); \
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER; \
+ 		} \
+ 	}
+@@ -478,17 +478,17 @@
+ 				SEPARATE_ZVAL(dataEntry);
+ 				convert_to_string_ex(dataEntry);
+ 				if (dataEntry[0]->value.str.len != sizeof(GUID))
+-					php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for PT_MV_CLSID property in proptag 0x%08X, position %d,%d", lpPropValue[cvalues].ulPropTag, i, j);
++					php_error_docref(NULL, E_WARNING, "invalid value for PT_MV_CLSID property in proptag 0x%08X, position %d,%d", lpPropValue[cvalues].ulPropTag, i, j);
+ 				else
+ 					memcpy(&lpPropValue[cvalues].Value.MVguid.lpguid[h++], dataEntry[0]->value.str.val, sizeof(GUID));
+ 			}
+ 			lpPropValue[cvalues++].Value.MVguid.cValues = h;
+ 			break;
+ 		case PT_MV_I8:
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "PT_MV_I8 not supported");
++			php_error_docref(NULL, E_WARNING, "PT_MV_I8 not supported");
+ 			return MAPI_G(hr) = MAPI_E_NO_SUPPORT;
+ 		case PT_MV_CURRENCY:
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "PT_MV_CURRENCY not supported");
++			php_error_docref(NULL, E_WARNING, "PT_MV_CURRENCY not supported");
+ 			return MAPI_G(hr) = MAPI_E_NO_SUPPORT;
+ 		case PT_ACTIONS:
+ 			dataHash = HASH_OF(entry[0]);
+@@ -497,7 +497,7 @@
+ 			zend_hash_internal_pointer_reset_ex(dataHash, &dhpos);
+ 			countarray = zend_hash_num_elements(dataHash); // # of actions
+ 			if (countarray == 0) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "PT_ACTIONS is empty");
++				php_error_docref(NULL, E_WARNING, "PT_ACTIONS is empty");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			if ((MAPI_G(hr) = MAPIAllocateMore(sizeof(ACTIONS), lpBase ? lpBase : lpPropValue, (void **)&lpPropValue[cvalues].Value.lpszA)) != hrSuccess)
+@@ -513,11 +513,11 @@
+ 				zend_hash_get_current_data_ex(dataHash, reinterpret_cast<void **>(&entry), &dhpos);
+ 				actionHash = HASH_OF(entry[0]);
+ 				if (!actionHash) {
+-					php_error_docref(NULL TSRMLS_CC, E_WARNING, "ACTIONS structure has a wrong ACTION");
++					php_error_docref(NULL, E_WARNING, "ACTIONS structure has a wrong ACTION");
+ 					return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 				}
+ 				if (zend_hash_find(actionHash, "action", sizeof("action"), (void **)&dataEntry) != SUCCESS) {
+-					php_error_docref(NULL TSRMLS_CC, E_WARNING, "PT_ACTIONS type has no action type in array");
++					php_error_docref(NULL, E_WARNING, "PT_ACTIONS type has no action type in array");
+ 					return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 				}
+ 
+@@ -543,7 +543,7 @@
+ 				case OP_MOVE:
+ 				case OP_COPY:
+ 					if (zend_hash_find(actionHash, "storeentryid", sizeof("storeentryid"), (void **)&dataEntry) != SUCCESS) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_COPY/OP_MOVE but no storeentryid entry");
++						php_error_docref(NULL, E_WARNING, "OP_COPY/OP_MOVE but no storeentryid entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					SEPARATE_ZVAL(dataEntry);
+@@ -554,7 +554,7 @@
+ 						return MAPI_G(hr);
+ 					memcpy(lpActions->lpAction[j].actMoveCopy.lpStoreEntryId, dataEntry[0]->value.str.val, dataEntry[0]->value.str.len);
+ 					if (zend_hash_find(actionHash, "folderentryid", sizeof("folderentryid"), (void **)&dataEntry) != SUCCESS) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_COPY/OP_MOVE but no folderentryid entry");
++						php_error_docref(NULL, E_WARNING, "OP_COPY/OP_MOVE but no folderentryid entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					SEPARATE_ZVAL(dataEntry);
+@@ -568,7 +568,7 @@
+ 				case OP_REPLY:
+ 				case OP_OOF_REPLY:
+ 					if (zend_hash_find(actionHash, "replyentryid", sizeof("replyentryid"), (void **)&dataEntry) != SUCCESS) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_REPLY but no replyentryid entry");
++						php_error_docref(NULL, E_WARNING, "OP_REPLY but no replyentryid entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					SEPARATE_ZVAL(dataEntry);
+@@ -584,7 +584,7 @@
+ 					        SEPARATE_ZVAL(dataEntry);
+ 						convert_to_string_ex(dataEntry);
+ 						if (dataEntry[0]->value.str.len != sizeof(GUID)) {
+-							php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_REPLY replyguid not sizeof(GUID)");
++							php_error_docref(NULL, E_WARNING, "OP_REPLY replyguid not sizeof(GUID)");
+ 							return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 						}
+ 						memcpy(&lpActions->lpAction[j].actReply.guidReplyTemplate, dataEntry[0]->value.str.val, sizeof(GUID));
+@@ -592,7 +592,7 @@
+ 					break;
+ 				case OP_DEFER_ACTION:
+ 					if (zend_hash_find(actionHash, "dam", sizeof("dam"), (void **)&dataEntry) != SUCCESS) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_DEFER_ACTION but no dam entry");
++						php_error_docref(NULL, E_WARNING, "OP_DEFER_ACTION but no dam entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					SEPARATE_ZVAL(dataEntry);
+@@ -605,7 +605,7 @@
+ 					break;
+ 				case OP_BOUNCE:
+ 					if (zend_hash_find(actionHash, "code", sizeof("code"), (void **)&dataEntry) != SUCCESS) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_BOUNCE but no code entry");
++						php_error_docref(NULL, E_WARNING, "OP_BOUNCE but no code entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					SEPARATE_ZVAL(dataEntry);
+@@ -615,31 +615,31 @@
+ 				case OP_FORWARD:
+ 				case OP_DELEGATE:
+ 					if (zend_hash_find(actionHash, "adrlist", sizeof("adrlist"), (void **)&dataEntry) != SUCCESS) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_FORWARD/OP_DELEGATE but no adrlist entry");
++						php_error_docref(NULL, E_WARNING, "OP_FORWARD/OP_DELEGATE but no adrlist entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					if (dataEntry[0]->type != IS_ARRAY) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_FORWARD/OP_DELEGATE adrlist entry must be an array");
++						php_error_docref(NULL, E_WARNING, "OP_FORWARD/OP_DELEGATE adrlist entry must be an array");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+-					MAPI_G(hr) = PHPArraytoAdrList(dataEntry[0], lpBase ? lpBase : lpPropValue, &lpActions->lpAction[j].lpadrlist TSRMLS_CC);
++					MAPI_G(hr) = PHPArraytoAdrList(dataEntry[0], lpBase ? lpBase : lpPropValue, &lpActions->lpAction[j].lpadrlist);
+ 					if (MAPI_G(hr) != hrSuccess)
+ 						return MAPI_G(hr);
+ 					if (MAPI_G(hr) != hrSuccess){
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_DELEGATE/OP_FORWARD wrong data in adrlist entry");
++						php_error_docref(NULL, E_WARNING, "OP_DELEGATE/OP_FORWARD wrong data in adrlist entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+ 					break;
+ 				case OP_TAG:
+ 					if (zend_hash_find(actionHash, "proptag", sizeof("proptag"), (void **)&dataEntry) != SUCCESS) {
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_TAG but no proptag entry");
++						php_error_docref(NULL, E_WARNING, "OP_TAG but no proptag entry");
+ 						return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 					}
+-					MAPI_G(hr) = PHPArraytoPropValueArray(dataEntry[0], lpBase ? lpBase : lpPropValue, &ulCountTmp, &lpPropTmp TSRMLS_CC);
++					MAPI_G(hr) = PHPArraytoPropValueArray(dataEntry[0], lpBase ? lpBase : lpPropValue, &ulCountTmp, &lpPropTmp);
+ 					if (MAPI_G(hr) != hrSuccess)
+ 						return MAPI_G(hr);
+ 					if (ulCountTmp > 1)
+-						php_error_docref(NULL TSRMLS_CC, E_WARNING, "OP_TAG has 'proptag' member which contains more than one property. Using the first in the array.");
++						php_error_docref(NULL, E_WARNING, "OP_TAG has 'proptag' member which contains more than one property. Using the first in the array.");
+ 					lpActions->lpAction[j].propTag = *lpPropTmp;
+ 					break;
+ 				case OP_DELETE:
+@@ -652,9 +652,9 @@
+ 			break;
+ 
+ 		case PT_SRESTRICTION:
+-			MAPI_G(hr) = PHPArraytoSRestriction(entry[0], lpBase ? lpBase : lpPropValue, &lpRestriction TSRMLS_CC);
++			MAPI_G(hr) = PHPArraytoSRestriction(entry[0], lpBase ? lpBase : lpPropValue, &lpRestriction);
+ 			if (MAPI_G(hr) != hrSuccess) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHPArray to SRestriction failed");
++				php_error_docref(NULL, E_WARNING, "PHPArray to SRestriction failed");
+ 				return MAPI_G(hr);
+ 			}
+ 			lpPropValue[cvalues++].Value.lpszA = (char *)lpRestriction;
+@@ -664,7 +664,7 @@
+ 			lpPropValue[cvalues].Value.err = entry[0]->value.lval;
+ 			break;
+ 		default:
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown property type %08X", PROP_TYPE(numIndex));
++			php_error_docref(NULL, E_WARNING, "Unknown property type %08X", PROP_TYPE(numIndex));
+ 			return MAPI_G(hr) = MAPI_E_INVALID_TYPE;
+ 		}
+ 	}
+@@ -674,7 +674,7 @@
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT PHPArraytoAdrList(zval *phpArray, void *lpBase, LPADRLIST *lppAdrList TSRMLS_DC) 
++HRESULT PHPArraytoAdrList(zval *phpArray, void *lpBase, LPADRLIST *lppAdrList) 
+ {
+ 	HashTable		*target_hash = NULL;
+ 	ULONG			countProperties = 0;		// number of properties
+@@ -686,18 +686,18 @@
+ 	MAPI_G(hr) = hrSuccess;
+ 
+ 	if (!phpArray) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No phpArray in PHPArraytoAdrList");
++		php_error_docref(NULL, E_WARNING, "No phpArray in PHPArraytoAdrList");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+ 	target_hash = HASH_OF(phpArray);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "phparraytoadrlist wrong data, unknown error");
++		php_error_docref(NULL, E_WARNING, "phparraytoadrlist wrong data, unknown error");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+ 	if(phpArray->type != IS_ARRAY) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "phparray to adrlist must include an array");
++		php_error_docref(NULL, E_WARNING, "phparray to adrlist must include an array");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+@@ -717,12 +717,12 @@
+ 	for (unsigned int i = 0; i < count; ++i, zend_hash_move_forward_ex(target_hash, &hpos)) {
+ 		zend_hash_get_current_data_ex(target_hash, reinterpret_cast<void **>(&entry), &hpos);
+ 		if(entry[0]->type != IS_ARRAY) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "phparraytoadrlist array must include an array with array of propvalues");
++			php_error_docref(NULL, E_WARNING, "phparraytoadrlist array must include an array with array of propvalues");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+ 
+-		MAPI_G(hr) = PHPArraytoPropValueArray(entry[0], lpBase, &countProperties, &pPropValue TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropValueArray(entry[0], lpBase, &countProperties, &pPropValue);
+ 		if(MAPI_G(hr) != hrSuccess)
+ 			goto exit;
+ 		++lpAdrList->cEntries;
+@@ -739,7 +739,7 @@
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT PHPArraytoRowList(zval *phpArray, void *lpBase, LPROWLIST *lppRowList TSRMLS_DC) {
++HRESULT PHPArraytoRowList(zval *phpArray, void *lpBase, LPROWLIST *lppRowList) {
+ 	HashTable		*target_hash = NULL;
+ 	ULONG			countProperties = 0;		// number of properties
+ 	ULONG			countRows = 0;		// number of actual recipients
+@@ -751,13 +751,13 @@
+ 	MAPI_G(hr) = hrSuccess;
+ 
+ 	if (!phpArray || phpArray->type != IS_ARRAY) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No phpArray in PHPArraytoRowList");
++		php_error_docref(NULL, E_WARNING, "No phpArray in PHPArraytoRowList");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+ 	target_hash = HASH_OF(phpArray);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoRowList");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoRowList");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(target_hash);
+@@ -774,17 +774,17 @@
+ 	for (unsigned int i = 0; i < count; ++i, zend_hash_move_forward_ex(target_hash, &hpos)) {
+ 		zend_hash_get_current_data_ex(target_hash, reinterpret_cast<void **>(&entry), &hpos);
+ 		if (Z_TYPE_PP(entry) != IS_ARRAY) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHPArraytoRowList, Row not wrapped in array");
++			php_error_docref(NULL, E_WARNING, "PHPArraytoRowList, Row not wrapped in array");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+ 
+ 		if (zend_hash_find(HASH_OF(entry[0]), "properties", sizeof("properties"), (void**)&data) == SUCCESS){
+-			MAPI_G(hr) = PHPArraytoPropValueArray(data[0], NULL, &countProperties, &pPropValue TSRMLS_CC);
++			MAPI_G(hr) = PHPArraytoPropValueArray(data[0], NULL, &countProperties, &pPropValue);
+ 			if(MAPI_G(hr) != hrSuccess)
+ 				goto exit;
+ 		}else {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHPArraytoRowList, Missing field properties");
++			php_error_docref(NULL, E_WARNING, "PHPArraytoRowList, Missing field properties");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+@@ -793,7 +793,7 @@
+ 			if (zend_hash_find(HASH_OF(entry[0]), "rowflags", sizeof("rowflags"), (void**)&data) == SUCCESS) {
+ 				lpRowList->aEntries[countRows].ulRowFlags = Z_LVAL_PP(data);
+ 			} else {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHPArraytoRowList, Missing field rowflags");
++				php_error_docref(NULL, E_WARNING, "PHPArraytoRowList, Missing field rowflags");
+ 				MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 				goto exit;
+ 			}
+@@ -801,7 +801,7 @@
+ 			lpRowList->aEntries[countRows].rgPropVals = pPropValue;
+ 			lpRowList->aEntries[countRows++].cValues = countProperties;
+ 		}else {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHPArraytoRowList, critical error");
++			php_error_docref(NULL, E_WARNING, "PHPArraytoRowList, critical error");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+@@ -878,7 +878,7 @@
+ * TODO: combine code from here and from PHPArraytoPropValueArray in a pval/zval to Proptag function (?)
+ */
+ 
+-HRESULT PHPArraytoSRestriction(zval *phpVal, void* lpBase, LPSRestriction lpRes TSRMLS_DC)
++HRESULT PHPArraytoSRestriction(zval *phpVal, void* lpBase, LPSRestriction lpRes)
+ {
+ 	HashTable *resHash	= NULL;
+ 	HashTable *dataHash = NULL;
+@@ -887,13 +887,13 @@
+ 	ULONG cValues = 0;
+ 
+ 	if (!phpVal || lpRes == NULL) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "critical error");
++		php_error_docref(NULL, E_WARNING, "critical error");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+ 	resHash = HASH_OF(phpVal);
+ 	if (!resHash || zend_hash_num_elements(resHash) != 2) {		// should always be array(RES_ , array(values))
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Wrong array should be array(RES_, array(values))");
++		php_error_docref(NULL, E_WARNING, "Wrong array should be array(RES_, array(values))");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	HashPosition rhpos, dhpos;
+@@ -907,7 +907,7 @@
+ 	lpRes->rt = typeEntry[0]->value.lval;		// set restriction type (RES_AND, RES_OR, ...)
+ 	dataHash = HASH_OF(valueEntry[0]);			// from resHash
+ 	if (!dataHash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "critical error, wrong array");
++		php_error_docref(NULL, E_WARNING, "critical error, wrong array");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(dataHash);
+@@ -925,7 +925,7 @@
+ 			return MAPI_G(hr);
+ 		for (unsigned int i = 0; i < count; ++i, zend_hash_move_forward_ex(dataHash, &dhpos)) {
+ 			zend_hash_get_current_data_ex(dataHash, reinterpret_cast<void **>(&valueEntry), &dhpos);
+-			MAPI_G(hr) = PHPArraytoSRestriction(valueEntry[0], lpBase, &lpRes->res.resAnd.lpRes[i] TSRMLS_CC);
++			MAPI_G(hr) = PHPArraytoSRestriction(valueEntry[0], lpBase, &lpRes->res.resAnd.lpRes[i]);
+ 			
+ 			if (MAPI_G(hr) != hrSuccess)
+ 				return MAPI_G(hr);
+@@ -940,7 +940,7 @@
+ 
+ 		for (unsigned int i = 0; i < count; ++i, zend_hash_move_forward_ex(dataHash, &dhpos)) {
+ 			zend_hash_get_current_data_ex(dataHash, reinterpret_cast<void **>(&valueEntry), &dhpos);
+-			MAPI_G(hr) = PHPArraytoSRestriction(valueEntry[0], lpBase, &lpRes->res.resOr.lpRes[i] TSRMLS_CC);
++			MAPI_G(hr) = PHPArraytoSRestriction(valueEntry[0], lpBase, &lpRes->res.resOr.lpRes[i]);
+ 
+ 			if (MAPI_G(hr) != hrSuccess)
+ 				return MAPI_G(hr);
+@@ -952,23 +952,23 @@
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		zend_hash_get_current_data_ex(dataHash, reinterpret_cast<void **>(&valueEntry), &dhpos);
+-		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry[0], lpBase, lpRes->res.resNot.lpRes TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry[0], lpBase, lpRes->res.resNot.lpRes);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		break;
+ 	case RES_SUBRESTRICTION:
+ 		if (zend_hash_index_find(dataHash, RESTRICTION, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_SUBRESTRICTION, Missing field RESTRICTION");
++			php_error_docref(NULL, E_WARNING, "RES_SUBRESTRICTION, Missing field RESTRICTION");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 
+-		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry[0], lpBase, &lpRes->res.resSub.lpRes TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry[0], lpBase, &lpRes->res.resSub.lpRes);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 
+ 		// ULPROPTAG as resSubObject
+ 		if (zend_hash_index_find(dataHash, ULPROPTAG, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_SUBRESTRICTION, Missing field ULPROPTAG");
++			php_error_docref(NULL, E_WARNING, "RES_SUBRESTRICTION, Missing field ULPROPTAG");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		lpRes->res.resSub.ulSubObject = valueEntry[0]->value.lval;
+@@ -976,24 +976,24 @@
+ 		break;
+ 	case RES_COMMENT:
+ 		if (zend_hash_index_find(dataHash, RESTRICTION, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMMENT, Missing field RESTRICTION");
++			php_error_docref(NULL, E_WARNING, "RES_COMMENT, Missing field RESTRICTION");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 
+-		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry[0], lpBase, &lpRes->res.resComment.lpRes TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoSRestriction(valueEntry[0], lpBase, &lpRes->res.resComment.lpRes);
+ 		if (MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMMENT, Wrong data in field RESTRICTION");
++			php_error_docref(NULL, E_WARNING, "RES_COMMENT, Wrong data in field RESTRICTION");
+ 			return MAPI_G(hr);
+ 		}
+ 
+ 		if (zend_hash_index_find(dataHash, PROPS, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMMENT, Missing field PROPS");
++			php_error_docref(NULL, E_WARNING, "RES_COMMENT, Missing field PROPS");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 
+-		MAPI_G(hr) = PHPArraytoPropValueArray(valueEntry[0], lpBase, &lpRes->res.resComment.cValues, &lpRes->res.resComment.lpProp TSRMLS_CC);
++		MAPI_G(hr) = PHPArraytoPropValueArray(valueEntry[0], lpBase, &lpRes->res.resComment.cValues, &lpRes->res.resComment.lpProp);
+ 		if(MAPI_G(hr) != hrSuccess) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMMENT, Wrong data in field PROPS");
++			php_error_docref(NULL, E_WARNING, "RES_COMMENT, Wrong data in field PROPS");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		break;
+@@ -1007,7 +1007,7 @@
+ 		if (lpRes->rt == RES_PROPERTY) {
+ 			// ULPROPTAG
+ 			if (zend_hash_index_find(dataHash, ULPROPTAG, (void **)&valueEntry) == FAILURE) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_PROPERTY, Missing field ULPROPTAG");
++				php_error_docref(NULL, E_WARNING, "RES_PROPERTY, Missing field ULPROPTAG");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			SEPARATE_ZVAL(valueEntry);
+@@ -1016,7 +1016,7 @@
+ 
+ 			// RELOP
+ 			if (zend_hash_index_find(dataHash, RELOP, (void **)&valueEntry) == FAILURE) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_PROPERTY, Missing field RELOP");
++				php_error_docref(NULL, E_WARNING, "RES_PROPERTY, Missing field RELOP");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			SEPARATE_ZVAL(valueEntry);
+@@ -1025,7 +1025,7 @@
+ 		} else {
+ 			// ULPROPTAG
+ 			if (zend_hash_index_find(dataHash, ULPROPTAG, (void **)&valueEntry) == FAILURE) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_CONTENT, Missing field ULPROPTAG");
++				php_error_docref(NULL, E_WARNING, "RES_CONTENT, Missing field ULPROPTAG");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 			SEPARATE_ZVAL(valueEntry);
+@@ -1040,7 +1040,7 @@
+ 			case PT_MV_BINARY:
+ 			case PT_MV_STRING8:
+ 				if (zend_hash_index_find(dataHash, FUZZYLEVEL, (void **)&valueEntry) == FAILURE) {
+-					php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_CONTENT, Missing field FUZZYLEVEL");
++					php_error_docref(NULL, E_WARNING, "RES_CONTENT, Missing field FUZZYLEVEL");
+ 					return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 				}
+ 				SEPARATE_ZVAL(valueEntry);
+@@ -1048,21 +1048,21 @@
+ 				lpRes->res.resContent.ulFuzzyLevel = valueEntry[0]->value.lval;
+ 				break;
+ 			default:
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_CONTENT, Not supported property type");
++				php_error_docref(NULL, E_WARNING, "RES_CONTENT, Not supported property type");
+ 				return MAPI_G(hr) = MAPI_E_TOO_COMPLEX;
+ 			};
+ 		}
+ 
+ 		// VALUE
+ 		if (zend_hash_index_find(dataHash, VALUE, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_PROPERTY or RES_CONTENT, Missing field VALUE");
++			php_error_docref(NULL, E_WARNING, "RES_PROPERTY or RES_CONTENT, Missing field VALUE");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 
+ 		if (valueEntry[0]->type == IS_ARRAY) {
+-			MAPI_G(hr) = PHPArraytoPropValueArray(valueEntry[0], lpBase, &cValues, &lpProp TSRMLS_CC);
++			MAPI_G(hr) = PHPArraytoPropValueArray(valueEntry[0], lpBase, &cValues, &lpProp);
+ 			if (MAPI_G(hr) != hrSuccess) {
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_PROPERTY or RES_CONTENT, Wrong data in field VALUE ");
++				php_error_docref(NULL, E_WARNING, "RES_PROPERTY or RES_CONTENT, Wrong data in field VALUE ");
+ 				return MAPI_G(hr);
+ 			}
+ 		} else {
+@@ -1130,14 +1130,14 @@
+ 			case PT_CLSID:
+ 				convert_to_string_ex(valueEntry);
+ 				if (valueEntry[0]->value.str.len != sizeof(GUID)) {
+-					php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for PT_CLSID property in proptag 0x%08X", lpProp->ulPropTag);
++					php_error_docref(NULL, E_WARNING, "invalid value for PT_CLSID property in proptag 0x%08X", lpProp->ulPropTag);
+ 					return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 				}
+ 				MAPI_G(hr) = MAPIAllocateMore(sizeof(GUID), lpBase, (void **)&lpProp->Value.lpguid);
+ 				memcpy(lpProp->Value.lpguid, valueEntry[0]->value.str.val, sizeof(GUID));
+ 				break;
+ 			default:
+-				php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_PROPERTY or RES_CONTENT, field VALUE no backward compatibility support");
++				php_error_docref(NULL, E_WARNING, "RES_PROPERTY or RES_CONTENT, field VALUE no backward compatibility support");
+ 				return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			}
+ 		}
+@@ -1151,7 +1151,7 @@
+ 	case RES_COMPAREPROPS:
+ 		// RELOP
+ 		if (zend_hash_index_find(dataHash, RELOP, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMPAREPROPS, Missing field RELOP");
++			php_error_docref(NULL, E_WARNING, "RES_COMPAREPROPS, Missing field RELOP");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1159,7 +1159,7 @@
+ 		lpRes->res.resCompareProps.relop = valueEntry[0]->value.lval;
+ 		// ULPROPTAG1
+ 		if (zend_hash_index_find(dataHash, ULPROPTAG1, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMPAREPROPS, Missing field ULPROPTAG1");
++			php_error_docref(NULL, E_WARNING, "RES_COMPAREPROPS, Missing field ULPROPTAG1");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1167,7 +1167,7 @@
+ 		lpRes->res.resCompareProps.ulPropTag1 = valueEntry[0]->value.lval;
+ 		// ULPROPTAG2
+ 		if (zend_hash_index_find(dataHash, ULPROPTAG2, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_COMPAREPROPS, Missing field ULPROPTAG2");
++			php_error_docref(NULL, E_WARNING, "RES_COMPAREPROPS, Missing field ULPROPTAG2");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1177,7 +1177,7 @@
+ 	case RES_BITMASK:
+ 		// ULTYPE
+ 		if (zend_hash_index_find(dataHash, ULTYPE, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_BITMASK, Missing field ULTYPE");
++			php_error_docref(NULL, E_WARNING, "RES_BITMASK, Missing field ULTYPE");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1185,7 +1185,7 @@
+ 		lpRes->res.resBitMask.relBMR = valueEntry[0]->value.lval;
+ 		// ULMASK
+ 		if (zend_hash_index_find(dataHash, ULMASK, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_BITMASK, Missing field ULMASK");
++			php_error_docref(NULL, E_WARNING, "RES_BITMASK, Missing field ULMASK");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1193,7 +1193,7 @@
+ 		lpRes->res.resBitMask.ulMask = valueEntry[0]->value.lval;
+ 		// ULPROPTAG
+ 		if (zend_hash_index_find(dataHash, ULPROPTAG, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_BITMASK, Missing field ULPROPTAG");
++			php_error_docref(NULL, E_WARNING, "RES_BITMASK, Missing field ULPROPTAG");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1203,7 +1203,7 @@
+ 	case RES_SIZE:
+ 		// CB
+ 		if (zend_hash_index_find(dataHash, CB, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_SIZE, Missing field CB");
++			php_error_docref(NULL, E_WARNING, "RES_SIZE, Missing field CB");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1211,7 +1211,7 @@
+ 		lpRes->res.resSize.cb = valueEntry[0]->value.lval;
+ 		// RELOP
+ 		if (zend_hash_index_find(dataHash, RELOP, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_SIZE, Missing field RELOP");
++			php_error_docref(NULL, E_WARNING, "RES_SIZE, Missing field RELOP");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1219,7 +1219,7 @@
+ 		lpRes->res.resSize.relop = valueEntry[0]->value.lval;
+ 		// ULPROPTAG
+ 		if (zend_hash_index_find(dataHash, ULPROPTAG, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_SIZE, Missing field ULPROPTAG");
++			php_error_docref(NULL, E_WARNING, "RES_SIZE, Missing field ULPROPTAG");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1229,7 +1229,7 @@
+ 	case RES_EXIST:
+ 		// ULPROPTAG
+ 		if (zend_hash_index_find(dataHash, ULPROPTAG, (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "RES_EXIST, Missing field ULPROPTAG");
++			php_error_docref(NULL, E_WARNING, "RES_EXIST, Missing field ULPROPTAG");
+ 			return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		}
+ 		SEPARATE_ZVAL(valueEntry);
+@@ -1237,19 +1237,19 @@
+ 		lpRes->res.resExist.ulPropTag = valueEntry[0]->value.lval;
+ 		break;
+ 	default:
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown restriction type");
++		php_error_docref(NULL, E_WARNING, "Unknown restriction type");
+ 		break;
+ 	}
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT PHPArraytoSRestriction(zval *phpVal, void* lpBase, LPSRestriction *lppRes TSRMLS_DC) {
++HRESULT PHPArraytoSRestriction(zval *phpVal, void* lpBase, LPSRestriction *lppRes) {
+ 	LPSRestriction lpRes = NULL;
+ 	
+ 	MAPI_G(hr) = MAPI_ALLOC(sizeof(SRestriction), lpBase, (void **)&lpRes);
+ 	if(MAPI_G(hr) != hrSuccess)
+ 		return MAPI_G(hr);
+-	MAPI_G(hr) = PHPArraytoSRestriction(phpVal, lpBase ? lpBase : lpRes, lpRes TSRMLS_CC);
++	MAPI_G(hr) = PHPArraytoSRestriction(phpVal, lpBase ? lpBase : lpRes, lpRes);
+ 	if(MAPI_G(hr) != hrSuccess)
+ 		goto exit;
+ 		
+@@ -1263,7 +1263,7 @@
+ }
+ 
+ HRESULT SRestrictiontoPHPArray(const SRestriction *lpRes, int level,
+-    zval **pret TSRMLS_DC)
++    zval **pret)
+ {
+ 	zval *entry = NULL;
+ 	char key[16];
+@@ -1273,7 +1273,7 @@
+ 	zval *ret;
+ 
+ 	if (!lpRes) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No restriction in SRestrictiontoPHPArray");
++		php_error_docref(NULL, E_WARNING, "No restriction in SRestrictiontoPHPArray");
+ 		return MAPI_E_INVALID_PARAMETER;
+ 	}
+ 
+@@ -1290,7 +1290,7 @@
+ 		for (ULONG c = 0; c < lpRes->res.resAnd.cRes; ++c) {
+ 		    entry = NULL;
+ 			sprintf(key, "%i", c);
+-			MAPI_G(hr) = SRestrictiontoPHPArray(&lpRes->res.resAnd.lpRes[c], level+1, &entry TSRMLS_CC);
++			MAPI_G(hr) = SRestrictiontoPHPArray(&lpRes->res.resAnd.lpRes[c], level+1, &entry);
+ 			if (MAPI_G(hr) != hrSuccess)
+ 				return MAPI_G(hr);
+ 			add_assoc_zval(array, key, entry);
+@@ -1305,7 +1305,7 @@
+ 		for (ULONG c = 0; c < lpRes->res.resOr.cRes; ++c) {
+ 		    entry = NULL;
+ 			sprintf(key, "%i", c);
+-			MAPI_G(hr) = SRestrictiontoPHPArray(&lpRes->res.resOr.lpRes[c], level+1, &entry TSRMLS_CC);
++			MAPI_G(hr) = SRestrictiontoPHPArray(&lpRes->res.resOr.lpRes[c], level+1, &entry);
+ 			if (MAPI_G(hr) != hrSuccess)
+ 				return MAPI_G(hr);
+ 			add_assoc_zval(array, key, entry);
+@@ -1319,7 +1319,7 @@
+ 		MAKE_STD_ZVAL(array);
+ 		array_init(array);
+ 
+-		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resNot.lpRes, level+1, &entry TSRMLS_CC);
++		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resNot.lpRes, level+1, &entry);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		add_assoc_zval(array, "0", entry);
+@@ -1329,7 +1329,7 @@
+ 		break;
+ 
+ 	case RES_CONTENT:
+-		MAPI_G(hr) = PropValueArraytoPHPArray(1, lpRes->res.resContent.lpProp, &props TSRMLS_CC);
++		MAPI_G(hr) = PropValueArraytoPHPArray(1, lpRes->res.resContent.lpProp, &props);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		MAKE_STD_ZVAL(array);
+@@ -1346,7 +1346,7 @@
+ 		break;
+ 
+ 	case RES_PROPERTY:
+-		MAPI_G(hr) = PropValueArraytoPHPArray(1, lpRes->res.resProperty.lpProp, &props TSRMLS_CC);
++		MAPI_G(hr) = PropValueArraytoPHPArray(1, lpRes->res.resProperty.lpProp, &props);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 		MAKE_STD_ZVAL(array);
+@@ -1416,7 +1416,7 @@
+ 
+ 	case RES_SUBRESTRICTION:
+ 	    restriction = NULL;
+-		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resSub.lpRes, level+1, &restriction TSRMLS_CC);
++		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resSub.lpRes, level+1, &restriction);
+ 		if (!restriction)
+ 			return MAPI_G(hr);
+ 		MAKE_STD_ZVAL(array);
+@@ -1431,11 +1431,11 @@
+ 		break;
+ 
+ 	case RES_COMMENT:
+-		MAPI_G(hr) = PropValueArraytoPHPArray(lpRes->res.resComment.cValues, lpRes->res.resComment.lpProp, &props TSRMLS_CC);
++		MAPI_G(hr) = PropValueArraytoPHPArray(lpRes->res.resComment.cValues, lpRes->res.resComment.lpProp, &props);
+ 		if (MAPI_G(hr) != hrSuccess)
+ 			return MAPI_G(hr);
+ 	    restriction = NULL;
+-		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resComment.lpRes, level+1, &restriction TSRMLS_CC);
++		MAPI_G(hr) = SRestrictiontoPHPArray(lpRes->res.resComment.lpRes, level+1, &restriction);
+ 		if (!restriction)
+ 			return MAPI_G(hr);
+ 		MAKE_STD_ZVAL(array);
+@@ -1460,7 +1460,7 @@
+ */
+ 
+ HRESULT PropTagArraytoPHPArray(ULONG cValues,
+-    const SPropTagArray *lpPropTagArray, zval **pret TSRMLS_DC)
++    const SPropTagArray *lpPropTagArray, zval **pret)
+ {
+ 	zval *zvalRet = NULL;
+ 	unsigned int i = 0;
+@@ -1483,7 +1483,7 @@
+ *
+ */
+ HRESULT PropValueArraytoPHPArray(ULONG cValues,
+-    const SPropValue *pPropValueArray, zval **pret TSRMLS_DC)
++    const SPropValue *pPropValueArray, zval **pret)
+ {
+ 	// return value
+ 	zval * zval_prop_value;
+@@ -1733,13 +1733,13 @@
+ 					break;
+ 				case OP_FORWARD:
+ 				case OP_DELEGATE:
+-					MAPI_G(hr) = RowSettoPHPArray((LPSRowSet)lpActions->lpAction[j].lpadrlist, &zval_alist_value TSRMLS_CC); // binary compatible
++					MAPI_G(hr) = RowSettoPHPArray((LPSRowSet)lpActions->lpAction[j].lpadrlist, &zval_alist_value); // binary compatible
+ 					if(MAPI_G(hr) != hrSuccess)
+ 						return MAPI_G(hr);
+ 					add_assoc_zval(zval_action_value, "adrlist", zval_alist_value);
+ 					break;
+ 				case OP_TAG:
+-					MAPI_G(hr) = PropValueArraytoPHPArray(1, &lpActions->lpAction[j].propTag, &zval_alist_value TSRMLS_CC);
++					MAPI_G(hr) = PropValueArraytoPHPArray(1, &lpActions->lpAction[j].propTag, &zval_alist_value);
+ 					if(MAPI_G(hr) != hrSuccess)
+ 						return MAPI_G(hr);
+ 					add_assoc_zval(zval_action_value, "proptag", zval_alist_value);
+@@ -1758,7 +1758,7 @@
+ 		case PT_SRESTRICTION:
+ 			lpRestriction = (LPSRestriction)pPropValue->Value.lpszA;
+ 			zval_action_value = NULL;
+-			MAPI_G(hr) = SRestrictiontoPHPArray(lpRestriction, 0, &zval_action_value TSRMLS_CC);
++			MAPI_G(hr) = SRestrictiontoPHPArray(lpRestriction, 0, &zval_action_value);
+ 			if (MAPI_G(hr) != hrSuccess)
+ 				continue;
+ 			add_assoc_zval(zval_prop_value, pulproptag, zval_action_value);
+@@ -1770,7 +1770,7 @@
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT RowSettoPHPArray(const SRowSet *lpRowSet, zval **pret TSRMLS_DC)
++HRESULT RowSettoPHPArray(const SRowSet *lpRowSet, zval **pret)
+ {
+ 	zval	*zval_prop_value = NULL;
+ 	ULONG	crow	= 0;
+@@ -1783,7 +1783,7 @@
+ 
+ 	// make a PHP-array from the rowset resource.
+ 	for (crow = 0; crow < lpRowSet->cRows; ++crow) {
+-		PropValueArraytoPHPArray(lpRowSet->aRow[crow].cValues, lpRowSet->aRow[crow].lpProps, &zval_prop_value TSRMLS_CC);
++		PropValueArraytoPHPArray(lpRowSet->aRow[crow].cValues, lpRowSet->aRow[crow].lpProps, &zval_prop_value);
+ 		zend_hash_next_index_insert(HASH_OF(ret), &zval_prop_value, sizeof(zval *), NULL);
+ 	}
+ 	
+@@ -1796,7 +1796,7 @@
+  * Convert from READSTATE array to PHP. Returns a list of arrays, each containing "sourcekey" and "flags" per entry
+  */
+ HRESULT ReadStateArraytoPHPArray(ULONG cValues, const READSTATE *lpReadStates,
+-    zval **ppvalRet TSRMLS_DC)
++    zval **ppvalRet)
+ {
+ 	zval *pvalRet;
+ 	unsigned int i=0;
+@@ -1826,7 +1826,7 @@
+  * Convert from PHP to READSTATE array.
+  */
+  
+-HRESULT PHPArraytoReadStateArray(zval *zvalReadStates, void *lpBase, ULONG *lpcValues, LPREADSTATE *lppReadStates TSRMLS_DC)
++HRESULT PHPArraytoReadStateArray(zval *zvalReadStates, void *lpBase, ULONG *lpcValues, LPREADSTATE *lppReadStates)
+ {
+ 	LPREADSTATE 	lpReadStates = NULL;
+ 	HashTable		*target_hash = NULL;
+@@ -1839,7 +1839,7 @@
+ 
+ 	target_hash = HASH_OF(zvalReadStates);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoReadStateArray");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoReadStateArray");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(Z_ARRVAL_P(zvalReadStates));
+@@ -1854,7 +1854,7 @@
+ 		pentry = *ppentry;
+ 
+ 		if(zend_hash_find(HASH_OF(pentry), "sourcekey", sizeof("sourcekey"), (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "No 'sourcekey' entry for one of the entries in the readstate list");
++			php_error_docref(NULL, E_WARNING, "No 'sourcekey' entry for one of the entries in the readstate list");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+@@ -1869,7 +1869,7 @@
+ 		lpReadStates[n].cbSourceKey = valueEntry[0]->value.str.len;
+ 		
+ 		if(zend_hash_find(HASH_OF(pentry), "flags", sizeof("flags"), (void **)&valueEntry) == FAILURE) {
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "No 'flags' entry for one of the entries in the readstate list");
++			php_error_docref(NULL, E_WARNING, "No 'flags' entry for one of the entries in the readstate list");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+@@ -1888,7 +1888,7 @@
+ 	return MAPI_G(hr);
+ }
+ 
+-HRESULT PHPArraytoGUIDArray(zval *phpVal, void *lpBase, ULONG *lpcValues, LPGUID *lppGUIDs TSRMLS_DC)
++HRESULT PHPArraytoGUIDArray(zval *phpVal, void *lpBase, ULONG *lpcValues, LPGUID *lppGUIDs)
+ {
+ 	HashTable *target_hash = NULL;
+ 	LPGUID lpGUIDs = NULL;
+@@ -1900,7 +1900,7 @@
+ 
+ 	target_hash = HASH_OF(phpVal);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoGUIDArray");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoGUIDArray");
+ 		return MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 	}
+ 	auto count = zend_hash_num_elements(Z_ARRVAL_P(phpVal));
+@@ -1922,7 +1922,7 @@
+ 		convert_to_string_ex(&pentry);
+ 		
+ 		if(pentry->value.str.len != sizeof(GUID)){
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "GUID must be 16 bytes");
++			php_error_docref(NULL, E_WARNING, "GUID must be 16 bytes");
+ 			MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 			goto exit;
+ 		}
+@@ -1939,7 +1939,7 @@
+ }
+ 
+ HRESULT NotificationstoPHPArray(ULONG cNotifs, const NOTIFICATION *lpNotifs,
+-    zval **pret TSRMLS_DC)
++    zval **pret)
+ {
+ 	zval *zvalRet = NULL;
+ 	zval *zvalProps = NULL;
+@@ -1980,7 +1980,7 @@
+ 			if (lpNotifs[i].info.obj.lpOldParentID)
+ 				add_assoc_stringl(zvalNotif, "oldparentid", (char *)lpNotifs[i].info.obj.lpOldParentID, lpNotifs[i].info.obj.cbOldParentID, 1);
+ 			if (lpNotifs[i].info.obj.lpPropTagArray) {
+-				MAPI_G(hr) = PropTagArraytoPHPArray(lpNotifs[i].info.obj.lpPropTagArray->cValues, lpNotifs[i].info.obj.lpPropTagArray, &zvalProps TSRMLS_CC);
++				MAPI_G(hr) = PropTagArraytoPHPArray(lpNotifs[i].info.obj.lpPropTagArray->cValues, lpNotifs[i].info.obj.lpPropTagArray, &zvalProps);
+ 				if (MAPI_G(hr) != hrSuccess)
+ 					return MAPI_G(hr);
+ 				add_assoc_zval(zvalNotif, "proptagarray", zvalProps);
+@@ -2004,14 +2004,14 @@
+ 	zval			**entry = NULL;
+ 
+ 	if (!phpArray) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No phpArray in PHPArraytoSendingOptions");
++		php_error_docref(NULL, E_WARNING, "No phpArray in PHPArraytoSendingOptions");
+ 		// not an error
+ 		return hr;
+ 	}
+ 
+ 	target_hash = HASH_OF(phpArray);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoSendingOptions");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoSendingOptions");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return hr;
+ 	}
+@@ -2025,7 +2025,7 @@
+ 		zend_hash_get_current_data_ex(target_hash, reinterpret_cast<void **>(&entry), &hpos);
+ 		if (zend_hash_get_current_key_ex(target_hash, &keyIndex,
+ 		    nullptr, &numIndex, 0, &hpos) != HASH_KEY_IS_STRING) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "PHPArraytoSendingOptions: expected array to be string-keyed");
++			php_error_docref(nullptr, E_WARNING, "PHPArraytoSendingOptions: expected array to be string-keyed");
+ 			continue;
+ 		}
+ 
+@@ -2051,7 +2051,7 @@
+ 			lpSOPT->ignore_missing_attachments = zval_is_true(*entry);
+ 		} else {
+ 			// msg_in_msg and enable_dsn not allowed, others unknown
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown or disallowed sending option %s", keyIndex);
++			php_error_docref(NULL, E_WARNING, "Unknown or disallowed sending option %s", keyIndex);
+ 		}
+ 	}
+ 	return hr;
+@@ -2064,14 +2064,14 @@
+ 	zval			**entry = NULL;
+ 
+ 	if (!phpArray) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No phpArray in PHPArraytoDeliveryOptions");
++		php_error_docref(NULL, E_WARNING, "No phpArray in PHPArraytoDeliveryOptions");
+ 		// not an error
+ 		return hr;
+ 	}
+ 
+ 	target_hash = HASH_OF(phpArray);
+ 	if (!target_hash) {
+-		php_error_docref(NULL TSRMLS_CC, E_WARNING, "No target_hash in PHPArraytoDeliveryOptions");
++		php_error_docref(NULL, E_WARNING, "No target_hash in PHPArraytoDeliveryOptions");
+ 		MAPI_G(hr) = MAPI_E_INVALID_PARAMETER;
+ 		return hr;
+ 	}
+@@ -2085,7 +2085,7 @@
+ 		zend_hash_get_current_data_ex(target_hash, reinterpret_cast<void **>(&entry), &hpos);
+ 		if (zend_hash_get_current_key_ex(target_hash, &keyIndex,
+ 		    nullptr, &numIndex, 0, &hpos) != HASH_KEY_IS_STRING) {
+-			php_error_docref(nullptr TSRMLS_CC, E_WARNING, "PHPArraytoDeliveryOptions: expected array to be string-keyed");
++			php_error_docref(nullptr, E_WARNING, "PHPArraytoDeliveryOptions: expected array to be string-keyed");
+ 			continue;
+ 		}
+ 
+@@ -2105,7 +2105,7 @@
+ 			lpDOPT->header_strict_rfc = zval_is_true(*entry);
+ 		} else {
+ 			// user_entryid not supported, others unknown
+-			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown or disallowed delivery option %s", keyIndex);
++			php_error_docref(NULL, E_WARNING, "Unknown or disallowed delivery option %s", keyIndex);
+ 		}
+ 	}
+ 	return hr;
+--- a/configure.ac
++++ b/configure.ac
+@@ -249,7 +249,8 @@
+ 	echo "PHP version: $PHP_VERSION"
+ 	AS_CASE([$PHP_VERSION],
+ 		[5.*], [with_php=5],
+-		[7.*], [with_php=7]
++		[7.*], [with_php=7],
++		[8.*], [with_php=7]
+ 	)
+ ])
+ AM_CONDITIONAL([WITH_PHP5], [test "$with_php" = 5])
+--- /dev/null
++++ b/php-ext/phparginfo.h
+@@ -0,0 +1,702 @@
++extern "C" {
++	#include "php.h"
++   	#include "php_globals.h"
++   	#include "php_ini.h"
++   	#include "zend_exceptions.h"
++	#include "ext/standard/info.h"
++	#include "ext/standard/php_string.h"
++}
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_last_hresult, 0, 0, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_prop_type, 0, 0, 1)
++	ZEND_ARG_INFO(0, proptag)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_prop_id, 0, 0, 1)
++	ZEND_ARG_INFO(0, proptag)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_is_error, 0, 0, 1)
++	ZEND_ARG_INFO(0, errorcode)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_make_scode, 0, 0, 2)
++	ZEND_ARG_INFO(0, sev)
++	ZEND_ARG_INFO(0, code)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_prop_tag, 0, 0, 2)
++	ZEND_ARG_INFO(0, proptype)
++	ZEND_ARG_INFO(0, propid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_createoneoff, 0, 0, 3)
++	ZEND_ARG_INFO(0, displayname)
++	ZEND_ARG_INFO(0, displaytype)
++	ZEND_ARG_INFO(0, emailaddress)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_parseoneoff, 0, 0, 1)
++	ZEND_ARG_INFO(0, entryid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_logon_zarafa, 0, 0, 8)
++	ZEND_ARG_INFO(0, username)
++	ZEND_ARG_INFO(0, password)
++	ZEND_ARG_INFO(0, server)
++	ZEND_ARG_INFO(0, sslcert)
++	ZEND_ARG_INFO(0, sslpass)
++	ZEND_ARG_INFO(0, flags)
++	ZEND_ARG_INFO(0, wa_version)
++	ZEND_ARG_INFO(0, misc_version)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_getmsgstorestable, 0, 0, 1)
++	ZEND_ARG_INFO(0, resource)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_openmsgstore, 0, 0, 2)
++	ZEND_ARG_INFO(0, session)
++	ZEND_ARG_INFO(0, storeentryid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_openprofilesection, 0, 0, 2)
++	ZEND_ARG_INFO(0, session)
++	ZEND_ARG_INFO(0, profilesectionguid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_openaddressbook, 0, 0, 2)
++	ZEND_ARG_INFO(0, session)
++	ZEND_ARG_INFO(0, entryid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_openentry, 0, 0, 3)
++	ZEND_ARG_INFO(0, resource)
++	ZEND_ARG_INFO(0, entryid)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_ab_openentry, 0, 0, 3)
++	ZEND_ARG_INFO(0, resource)
++	ZEND_ARG_INFO(0, entryid)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_ab_resolvename, 0, 0, 3)
++	ZEND_ARG_INFO(0, resource)
++	ZEND_ARG_INFO(0, properties)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_ab_getdefaultdir, 0, 0, 1)
++	ZEND_ARG_INFO(0, resource)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_msgstore_createentryid, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, username)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_msgstore_getarchiveentryid, 0, 0, 2)
++	ZEND_ARG_INFO(0, user)
++	ZEND_ARG_INFO(0, server)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_msgstore_openentry, 0, 0, 2)
++	ZEND_ARG_INFO(0, msgstore)
++	ZEND_ARG_INFO(0, entryid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_msgstore_getreceivefolder, 0, 0, 1)
++	ZEND_ARG_INFO(0, store)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_msgstore_entryidfromsourcekey, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, folderid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_msgstore_advise, 0, 0, 4)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, folderentryid)
++	ZEND_ARG_INFO(0, mask)
++	ZEND_ARG_INFO(0, sink)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_msgstore_unadvise, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, sink)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_msgstore_abortsubmit, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, entryid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_sink_create, 0, 0, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_sink_timedwait, 0, 0, 2)
++	ZEND_ARG_INFO(0, sink)
++	ZEND_ARG_INFO(0, time)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_table_queryallrows, 0, 0, 3)
++	ZEND_ARG_INFO(0, mapitable)
++	ZEND_ARG_INFO(0, properties)
++	ZEND_ARG_INFO(0, restriction)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_table_queryrows, 0, 0, 4)
++	ZEND_ARG_INFO(0, mapitable)
++	ZEND_ARG_INFO(0, columns)
++	ZEND_ARG_INFO(0, start)
++	ZEND_ARG_INFO(0, rowcount)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_table_getrowcount, 0, 0, 1)
++	ZEND_ARG_INFO(0, table)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_table_setcolumns, 0, 0, 2)
++	ZEND_ARG_INFO(0, table)
++	ZEND_ARG_INFO(0, properties)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_table_seekrow, 0, 0, 3)
++	ZEND_ARG_INFO(0, table)
++	ZEND_ARG_INFO(0, bookmark)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_table_sort, 0, 0, 3)
++	ZEND_ARG_INFO(0, table)
++	ZEND_ARG_INFO(0, properties)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_table_restrict, 0, 0, 3)
++	ZEND_ARG_INFO(0, table)
++	ZEND_ARG_INFO(0, restriction)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_gethierarchytable, 0, 0, 2)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_getcontentstable, 0, 0, 2)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_createmessage, 0, 0, 2)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_createfolder, 0, 0, 4)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, name)
++	ZEND_ARG_INFO(0, comment)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_deletemessages, 0, 0, 3)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, entryids)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_copymessages, 0, 0, 3)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, entryids)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_emptyfolder, 0, 0, 2)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_copyfolder, 0, 0, 5)
++	ZEND_ARG_INFO(0, sourcefolder)
++	ZEND_ARG_INFO(0, sourceentryid)
++	ZEND_ARG_INFO(0, destfolder)
++	ZEND_ARG_INFO(0, foldername)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_deletefolder, 0, 0, 3)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, entryid)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_setreadflags, 0, 0, 3)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, entries)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_openmodifytable, 0, 0, 2)
++	ZEND_ARG_INFO(0, folder)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_setsearchcriteria, 0, 0, 4)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, restriction)
++	ZEND_ARG_INFO(0, entryids)
++	ZEND_ARG_INFO(0, subfolder)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_folder_getsearchcriteria, 0, 0, 2)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_message_getattachmenttable, 0, 0, 1)
++	ZEND_ARG_INFO(0, folder)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_message_getrecipientttable, 0, 0, 1)
++	ZEND_ARG_INFO(0, folder)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_message_openattach, 0, 0, 2)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, attachnum)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_message_createattach, 0, 0, 2)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_message_deleteattach, 0, 0, 3)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, attachnum)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_message_modifyrecipients, 0, 0, 3)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, flags)
++	ZEND_ARG_INFO(0, addresslist)
++ZEND_END_ARG_INFO()
++
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_message_submitmessage, 0, 0, 1)
++	ZEND_ARG_INFO(0, message)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_message_setreadflag, 0, 0, 2)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_stream_write, 0, 0, 2)
++	ZEND_ARG_INFO(0, stream)
++	ZEND_ARG_INFO(0, body)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_stream_read, 0, 0, 2)
++	ZEND_ARG_INFO(0, stream)
++	ZEND_ARG_INFO(0, size)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_stream_stat, 0, 0, 1)
++	ZEND_ARG_INFO(0, stream)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_stream_seek, 0, 0, 2)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_stream_commit, 0, 0, 1)
++	ZEND_ARG_INFO(0, stream)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_stream_setsize, 0, 0, 2)
++	ZEND_ARG_INFO(0, stream)
++	ZEND_ARG_INFO(0, size)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_stream_create, 0, 0, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_attach_openobj, 0, 0, 2)
++	ZEND_ARG_INFO(0, attachment)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_savechanges, 0, 0, 2)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_getprops, 0, 0, 2)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, properties)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_setprops, 0, 0, 2)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, properties)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_copyto, 0, 0, 5)
++	ZEND_ARG_INFO(0, resource)
++	ZEND_ARG_INFO(0, exludeentryids)
++	ZEND_ARG_INFO(0, excludeprops)
++	ZEND_ARG_INFO(0, destination)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_openproperty, 0, 0, 2)
++	ZEND_ARG_INFO(0, resource)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_deleteprops, 0, 0, 2)
++	ZEND_ARG_INFO(0, resource)
++	ZEND_ARG_INFO(0, properties)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_getnamesfromids, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, array)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_getidsfromnames, 0, 0, 3)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, propertynames)
++	ZEND_ARG_INFO(0, guids)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_decompressrtf, 0, 0, 1)
++	ZEND_ARG_INFO(0, rtf)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_createconversationindex, 0, 0, 1)
++	ZEND_ARG_INFO(0, blob)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_rules_gettable, 0, 0, 1)
++	ZEND_ARG_INFO(0, table)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_rules_modifytable, 0, 0, 3)
++	ZEND_ARG_INFO(0, table)
++	ZEND_ARG_INFO(0, rows)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_zarafa_getuser_by_id, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, userid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_zarafa_getuser_by_name, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, username)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_zarafa_getuserlist, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, companyid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_zarafa_getgrouplist, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, companyid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_zarafa_getgrouplistofuser, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, userid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_zarafa_getgrouplistofgroup, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, groupid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_zarafa_getuserlistofgroup, 0, 0, 2)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, groupid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_zarafa_getcompanylist, 0, 0, 1)
++	ZEND_ARG_INFO(0, store)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_zarafa_getpermissionsrules, 0, 0, 2)
++	ZEND_ARG_INFO(0, resource)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_zarafa_setpermissionsrules, 0, 0, 2)
++	ZEND_ARG_INFO(0, resource)
++	ZEND_ARG_INFO(0, rules)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusy_openmsg, 0, 0, 1)
++	ZEND_ARG_INFO(0, store)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusysupport_open, 0, 0, 2)
++	ZEND_ARG_INFO(0, session)
++	ZEND_ARG_INFO(0, store)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusysupport_close, 0, 0, 1)
++	ZEND_ARG_INFO(0, freebusysupport)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusysupport_loaddata, 0, 0, 2)
++	ZEND_ARG_INFO(0, freebusysupport)
++	ZEND_ARG_INFO(0, data)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusysupport_loadupdate, 0, 0, 2)
++	ZEND_ARG_INFO(0, freebusysupport)
++	ZEND_ARG_INFO(0, data)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusydata_enumblocks, 0, 0, 3)
++	ZEND_ARG_INFO(0, fbdata)
++	ZEND_ARG_INFO(0, start)
++	ZEND_ARG_INFO(0, end)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusydata_getpublishrange, 0, 0, 2)
++	ZEND_ARG_INFO(0, fbdata)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusydata_setrange, 0, 0, 3)
++	ZEND_ARG_INFO(0, fbdata)
++	ZEND_ARG_INFO(0, start)
++	ZEND_ARG_INFO(0, end)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusyenumblock_reset, 0, 0, 1)
++	ZEND_ARG_INFO(0, enumblock)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusyenumblock_next, 0, 0, 2)
++	ZEND_ARG_INFO(0, enumblock)
++	ZEND_ARG_INFO(0, count)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusyenumblock_skip, 0, 0, 2)
++	ZEND_ARG_INFO(0, enumblock)
++	ZEND_ARG_INFO(0, count)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusyenumblock_restrict, 0, 0, 3)
++	ZEND_ARG_INFO(0, enumblock)
++	ZEND_ARG_INFO(0, start)
++	ZEND_ARG_INFO(0, end)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusyenumblock_ical, 0, 0, 7)
++	ZEND_ARG_INFO(0, enumblock)
++	ZEND_ARG_INFO(0, count)
++	ZEND_ARG_INFO(0, start)
++	ZEND_ARG_INFO(0, end)
++	ZEND_ARG_INFO(0, organiser)
++	ZEND_ARG_INFO(0, user)
++	ZEND_ARG_INFO(0, uid)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusyupdate_publish, 0, 0, 2)
++	ZEND_ARG_INFO(0, fbupdate)
++	ZEND_ARG_INFO(0, blocks)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusyupdate_reset, 0, 0, 1)
++	ZEND_ARG_INFO(0, fbupdate)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_freebusyupdate_savechanges, 0, 0, 3)
++	ZEND_ARG_INFO(0, fbupdate)
++	ZEND_ARG_INFO(0, start)
++	ZEND_ARG_INFO(0, end)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_exportchanges_config, 0, 0, 8)
++	ZEND_ARG_INFO(0, exportchanges)
++	ZEND_ARG_INFO(0, stream)
++	ZEND_ARG_INFO(0, flags)
++	ZEND_ARG_INFO(0, importchanges)
++	ZEND_ARG_INFO(0, restriction)
++	ZEND_ARG_INFO(0, includeprops)
++	ZEND_ARG_INFO(0, excludeprops)
++	ZEND_ARG_INFO(0, buffersize)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_exportchanges_synchronize, 0, 0, 1)
++	ZEND_ARG_INFO(0, exportchanges)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_exportchanges_updatestate, 0, 0, 2)
++	ZEND_ARG_INFO(0, exportchanges)
++	ZEND_ARG_INFO(0, stream)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_exportchanges_getchangecount, 0, 0, 1)
++	ZEND_ARG_INFO(0, exportchanges)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_importcontentschanges_config, 0, 0, 3)
++	ZEND_ARG_INFO(0, importcontentschanges)
++	ZEND_ARG_INFO(0, stream)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_importcontentschanges_updatestate, 0, 0, 2)
++	ZEND_ARG_INFO(0, importcontentschanges)
++	ZEND_ARG_INFO(0, stream)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_importcontentschanges_importmessagechange, 0, 0, 4)
++	ZEND_ARG_INFO(0, importer)
++	ZEND_ARG_INFO(0, props)
++	ZEND_ARG_INFO(0, flags)
++	ZEND_ARG_INFO(1, mapimessage)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_importcontentschanges_importmessagedeletion, 0, 0, 3)
++	ZEND_ARG_INFO(0, importcontentschanges)
++	ZEND_ARG_INFO(0, flags)
++	ZEND_ARG_INFO(0, messages)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_importcontentschanges_importperuserreadstatechange, 0, 0, 2)
++	ZEND_ARG_INFO(0, importcontentschanges)
++	ZEND_ARG_INFO(0, readstates)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_importcontentschanges_importmessagemove, 0, 0, 6)
++	ZEND_ARG_INFO(0, importcontentschanges)
++	ZEND_ARG_INFO(0, sourcekeyfolder)
++	ZEND_ARG_INFO(0, sourcekeymessage)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, sourcekey)
++	ZEND_ARG_INFO(0, changenumdestmessage)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_importhierarchychanges_config, 0, 0, 3)
++	ZEND_ARG_INFO(0, importhierarchychanges)
++	ZEND_ARG_INFO(0, stream)
++	ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_importhierarchychanges_updatestate, 0, 0, 2)
++	ZEND_ARG_INFO(0, importhierarchychanges)
++	ZEND_ARG_INFO(0, stream)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_importhierarchychanges_importfolderchange, 0, 0, 2)
++	ZEND_ARG_INFO(0, importhierarchychanges)
++	ZEND_ARG_INFO(0, props)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_importhierarchychanges_importfolderdeletion, 0, 0, 3)
++	ZEND_ARG_INFO(0, importhierarchychanges)
++	ZEND_ARG_INFO(0, flags)
++	ZEND_ARG_INFO(0, folders)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_wrap_importcontentschanges, 0, 0, 3)
++	ZEND_ARG_INFO(1, phpwrapper)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_wrap_importhierarchychanges, 0, 0, 1)
++	ZEND_ARG_INFO(1, phpwrapper)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_inetmapi_imtoinet, 0, 0, 4)
++	ZEND_ARG_INFO(0, session)
++	ZEND_ARG_INFO(0, addrbook)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, options)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_inetmapi_imtomapi, 0, 0, 6)
++	ZEND_ARG_INFO(0, session)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, addrbook)
++	ZEND_ARG_INFO(0, messsage)
++	ZEND_ARG_INFO(0, data)
++	ZEND_ARG_INFO(0, options)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_icaltomapi, 0, 0, 6)
++	ZEND_ARG_INFO(0, session)
++	ZEND_ARG_INFO(0, store)
++	ZEND_ARG_INFO(0, addrbook)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, data)
++	ZEND_ARG_INFO(0, noRecipients)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_icaltomapi2, 0, 0, 3)
++	ZEND_ARG_INFO(0, addrbook)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, ics_data)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_numinvalidicalproperties, 0, 0 ,0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_numinvalidicalcomponents, 0, 0 ,0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_mapitoical, 0, 0, 3)
++	ZEND_ARG_INFO(0, ignored)
++	ZEND_ARG_INFO(0, addrbook)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, options)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_vcftomapi, 0, 0, 3)
++	ZEND_ARG_INFO(0, ignored)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, data)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_vcftomapi2, 0, 0, 2)
++	ZEND_ARG_INFO(0, folder)
++	ZEND_ARG_INFO(0, data)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_mapitovcf, 0, 0, 4)
++	ZEND_ARG_INFO(0, ignored)
++	ZEND_ARG_INFO(0, addrbook)
++	ZEND_ARG_INFO(0, message)
++	ZEND_ARG_INFO(0, options)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_enable_exceptions, 0, 0, 1)
++	ZEND_ARG_INFO(0, str_class)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_mapi_feature, 0, 0, 1)
++	ZEND_ARG_INFO(0, feature)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_kc_session_save, 0, 0, 2)
++	ZEND_ARG_INFO(0, session)
++	ZEND_ARG_INFO(1, data)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_kc_session_restore, 0, 0, 2)
++	ZEND_ARG_INFO(0, session)
++	ZEND_ARG_INFO(1, data)
++ZEND_END_ARG_INFO()
diff -pruN 8.7.0-7.1/debian/patches/fix-build-gcc-11.patch 8.7.0-7.1ubuntu11/debian/patches/fix-build-gcc-11.patch
--- 8.7.0-7.1/debian/patches/fix-build-gcc-11.patch	1970-01-01 00:00:00.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/patches/fix-build-gcc-11.patch	2021-11-07 20:30:40.000000000 +0000
@@ -0,0 +1,14 @@
+Description: Fix build with newer gcc 11
+Origin: Cherry pick of little part of 4289ecc9147260fd92adfab294935446c29793dd
+Last-Update: 2021-11-08
+
+--- kopanocore-8.7.0.orig/mapi4linux/include/kopano/memory.hpp
++++ kopanocore-8.7.0/mapi4linux/include/kopano/memory.hpp
+@@ -7,6 +7,7 @@
+ #define _KC_MEMORY_HPP 1
+ 
+ #include <kopano/zcdefs.h>
++#include <memory>
+ #include <type_traits> /* std::is_base_of */
+ #include <utility> /* std::swap */
+ #include <cstdlib>
diff -pruN 8.7.0-7.1/debian/patches/series 8.7.0-7.1ubuntu11/debian/patches/series
--- 8.7.0-7.1/debian/patches/series	2020-12-09 21:01:33.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/patches/series	2021-11-07 20:30:40.000000000 +0000
@@ -32,3 +32,5 @@ dbadm-pass-shared_ptr-KDatabase-consiste
 dbadm-add-corrective-procedure-for-bug-KC-1444.patch
 freebusy-avoid-out-of-bounds-access-in-HrAddFBBlock.patch
 fix-build.patch
+add-php8-support.patch
+fix-build-gcc-11.patch
diff -pruN 8.7.0-7.1/debian/tests/smoke 8.7.0-7.1ubuntu11/debian/tests/smoke
--- 8.7.0-7.1/debian/tests/smoke	2019-10-30 12:47:51.000000000 +0000
+++ 8.7.0-7.1ubuntu11/debian/tests/smoke	2021-06-23 15:09:47.000000000 +0000
@@ -30,7 +30,7 @@ echo
 
 echo "#######################################################################"
 echo "# Restart MariaDB server...                                           #"
-/etc/init.d/mysql start
+/etc/init.d/mariadb start
 echo "# Restart MariaDB server... done.                                     #"
 echo "#######################################################################"
 echo
