From b98a35d4fcad6d9cc3544e58608f2e10826bef78 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Mon, 3 Aug 2009 15:46:35 +0200 Subject: [PATCH] PHP: fix for the import_nomodule testcase --- Examples/test-suite/php/import_nomodule_runme.php | 20 ++++++++++++++++++++ Source/Modules/php.cxx | 12 +++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 Examples/test-suite/php/import_nomodule_runme.php diff --git a/Examples/test-suite/php/import_nomodule_runme.php b/Examples/test-suite/php/import_nomodule_runme.php new file mode 100644 index 0000000..84191fb --- /dev/null +++ b/Examples/test-suite/php/import_nomodule_runme.php @@ -0,0 +1,20 @@ + diff --git a/Source/Modules/php.cxx b/Source/Modules/php.cxx index fdf88c9..3bdbb98 100644 --- a/Source/Modules/php.cxx +++ b/Source/Modules/php.cxx @@ -1627,8 +1627,14 @@ public: */ Printf(output, "\t\tif (is_resource($r)) {\n"); Printf(output, "\t\t\t$class='%s'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n", prefix); - Printf(output, "\t\t\treturn new $class($r);\n\t\t}\n"); - Printf(output, "\t\telse return $r;\n"); + if (Getattr(classLookup(Getattr(n, "type")), "module")) { + Printf(output, "\t\t\treturn new $class($r);\n"); + } else { + Printf(output, "\t\t\t$c = new stdClass();\n"); + Printf(output, "\t\t\t$c->_cPtr = $r;\n"); + Printf(output, "\t\t\treturn $c;\n"); + } + Printf(output, "\t\t}\n\t\telse return $r;\n"); } else { Printf(output, "\t\t$this->%s = $r;\n", SWIG_PTR); Printf(output, "\t\treturn $this;\n"); @@ -1928,7 +1934,7 @@ public: Printf(s_phpclasses, "class %s%s ", prefix, shadow_classname); String *baseclass = NULL; - if (base.item) { + if (base.item && Getattr(base.item, "module")) { baseclass = Getattr(base.item, "sym:name"); if (!baseclass) baseclass = Getattr(base.item, "name"); -- 1.6.3.3