summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlly Betts <olly@survex.com>2015-01-14 15:38:55 +1300
committerOlly Betts <olly@survex.com>2015-01-14 15:38:55 +1300
commit0dd685bad224ea2a586340b46ea5fa25e8d9422c (patch)
tree50c38468823db664977d56669dc0b021d5a879ab
parent558ded2cebaaaba55c2e6adb10ca932fb1c2d260 (diff)
downloadswig-0dd685bad224ea2a586340b46ea5fa25e8d9422c.tar.gz
Fix PHP crash in director_finalizer
-rw-r--r--Lib/php/director.swg3
-rw-r--r--Source/Modules/php.cxx4
2 files changed, 2 insertions, 5 deletions
diff --git a/Lib/php/director.swg b/Lib/php/director.swg
index 06eeb73b0..92c149999 100644
--- a/Lib/php/director.swg
+++ b/Lib/php/director.swg
@@ -98,8 +98,7 @@ namespace Swig {
TSRMLS_SET_CTX(swig_zts_ctx);
}
- bool swig_is_overridden_method(char *cname, char *lc_fname) {
- TSRMLS_FETCH_FROM_CTX(swig_zts_ctx);
+ static bool swig_is_overridden_method(char *cname, char *lc_fname TSRMLS_DC) {
zend_class_entry **ce;
zend_function *mptr;
diff --git a/Source/Modules/php.cxx b/Source/Modules/php.cxx
index 00dfb064e..a2f0e3687 100644
--- a/Source/Modules/php.cxx
+++ b/Source/Modules/php.cxx
@@ -915,10 +915,8 @@ public:
}
if (is_member_director(n)) {
- Wrapper_add_local(f, "director", "Swig::Director *director = 0");
- Printf(f->code, "director = dynamic_cast<Swig::Director*>(arg1);\n");
Wrapper_add_local(f, "upcall", "bool upcall = false");
- Printf(f->code, "upcall = !director->swig_is_overridden_method((char *)\"%s%s\", (char *)\"%s\");\n",
+ Printf(f->code, "upcall = !Swig::Director::swig_is_overridden_method((char *)\"%s%s\", (char *)\"%s\" TSRMLS_CC);\n",
prefix, Swig_class_name(Swig_methodclass(n)), name);
}