[mapserver-commits] r11295 - trunk/mapserver/mapscript/php
svn at osgeo.org
svn at osgeo.org
Mon Mar 21 13:41:19 EDT 2011
Author: aboudreault
Date: 2011-03-21 10:41:19 -0700 (Mon, 21 Mar 2011)
New Revision: 11295
Modified:
trunk/mapserver/mapscript/php/class.c
trunk/mapserver/mapscript/php/layer.c
trunk/mapserver/mapscript/php/map.c
trunk/mapserver/mapscript/php/php_mapscript_util.c
trunk/mapserver/mapscript/php/php_mapscript_util.h
Log:
Mapscript Seg Fault on mapObj->getMetaData()
Modified: trunk/mapserver/mapscript/php/class.c
===================================================================
--- trunk/mapserver/mapscript/php/class.c 2011-03-21 15:44:55 UTC (rev 11294)
+++ trunk/mapserver/mapscript/php/class.c 2011-03-21 17:41:19 UTC (rev 11295)
@@ -511,6 +511,7 @@
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
php_class = (php_class_object *) zend_object_store_get_object(zobj TSRMLS_CC);
+ CHECK_OBJECT(mapscript_ce_hashtable, php_class->metadata, &php_class->class->metadata);
args[0] = zname;
MAPSCRIPT_CALL_METHOD(php_class->metadata, "get", retval, 1, args);
@@ -539,6 +540,7 @@
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
php_class = (php_class_object *) zend_object_store_get_object(zobj TSRMLS_CC);
+ CHECK_OBJECT(mapscript_ce_hashtable, php_class->metadata, &php_class->class->metadata);
args[0] = zname;
args[1] = zvalue;
@@ -568,6 +570,7 @@
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
php_class = (php_class_object *) zend_object_store_get_object(zobj TSRMLS_CC);
+ CHECK_OBJECT(mapscript_ce_hashtable, php_class->metadata, &php_class->class->metadata);
args[0] = zname;
MAPSCRIPT_CALL_METHOD(php_class->metadata, "remove", retval, 1, args);
Modified: trunk/mapserver/mapscript/php/layer.c
===================================================================
--- trunk/mapserver/mapscript/php/layer.c 2011-03-21 15:44:55 UTC (rev 11294)
+++ trunk/mapserver/mapscript/php/layer.c 2011-03-21 17:41:19 UTC (rev 11295)
@@ -1175,8 +1175,9 @@
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
php_layer = (php_layer_object *) zend_object_store_get_object(zobj TSRMLS_CC);
-
- args[0] = zname;
+ CHECK_OBJECT(mapscript_ce_hashtable, php_layer->metadata, &php_layer->layer->metadata);
+
+ args[0] = zname;
MAPSCRIPT_CALL_METHOD(php_layer->metadata, "get", retval, 1, args);
RETURN_STRING(Z_STRVAL(retval),1);
@@ -1203,6 +1204,7 @@
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
php_layer = (php_layer_object *) zend_object_store_get_object(zobj TSRMLS_CC);
+ CHECK_OBJECT(mapscript_ce_hashtable, php_layer->metadata, &php_layer->layer->metadata);
args[0] = zname;
args[1] = zvalue;
@@ -1232,6 +1234,7 @@
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
php_layer = (php_layer_object *) zend_object_store_get_object(zobj TSRMLS_CC);
+ CHECK_OBJECT(mapscript_ce_hashtable, php_layer->metadata, &php_layer->layer->metadata);
args[0] = zname;
MAPSCRIPT_CALL_METHOD(php_layer->metadata, "remove", retval, 1, args);
Modified: trunk/mapserver/mapscript/php/map.c
===================================================================
--- trunk/mapserver/mapscript/php/map.c 2011-03-21 15:44:55 UTC (rev 11294)
+++ trunk/mapserver/mapscript/php/map.c 2011-03-21 17:41:19 UTC (rev 11295)
@@ -2204,6 +2204,7 @@
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
php_map = (php_map_object *) zend_object_store_get_object(zobj TSRMLS_CC);
+ CHECK_OBJECT(mapscript_ce_hashtable, php_map->metadata, &php_map->map->web.metadata);
args[0] = zname;
MAPSCRIPT_CALL_METHOD(php_map->metadata, "get", retval, 1, args);
@@ -2232,6 +2233,7 @@
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
php_map = (php_map_object *) zend_object_store_get_object(zobj TSRMLS_CC);
+ CHECK_OBJECT(mapscript_ce_hashtable, php_map->metadata, &php_map->map->web.metadata);
args[0] = zname;
args[1] = zvalue;
@@ -2261,6 +2263,7 @@
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
php_map = (php_map_object *) zend_object_store_get_object(zobj TSRMLS_CC);
+ CHECK_OBJECT(mapscript_ce_hashtable, php_map->metadata, &php_map->map->web.metadata);
args[0] = zname;
MAPSCRIPT_CALL_METHOD(php_map->metadata, "remove", retval, 1, args);
Modified: trunk/mapserver/mapscript/php/php_mapscript_util.c
===================================================================
--- trunk/mapserver/mapscript/php/php_mapscript_util.c 2011-03-21 15:44:55 UTC (rev 11294)
+++ trunk/mapserver/mapscript/php/php_mapscript_util.c 2011-03-21 17:41:19 UTC (rev 11295)
@@ -152,8 +152,10 @@
MAPSCRIPT_ADDREF(*php_object_storage);
// return a reference to the object
- zval_ptr_dtor(*return_value_ptr);
- zval_set_isref_p(*php_object_storage);
- **return_value_ptr = *php_object_storage;
+ if (return_value_ptr) {
+ zval_ptr_dtor(*return_value_ptr);
+ zval_set_isref_p(*php_object_storage);
+ **return_value_ptr = *php_object_storage;
+ }
}
Modified: trunk/mapserver/mapscript/php/php_mapscript_util.h
===================================================================
--- trunk/mapserver/mapscript/php/php_mapscript_util.h 2011-03-21 15:44:55 UTC (rev 11294)
+++ trunk/mapserver/mapscript/php/php_mapscript_util.h 2011-03-21 17:41:19 UTC (rev 11295)
@@ -131,6 +131,12 @@
return; \
}
+#define CHECK_OBJECT(mapscript_ce, php_object_storage, internal_object) \
+ if (!php_object_storage) { \
+ mapscript_fetch_object(mapscript_ce, zobj, NULL, (void*)internal_object, \
+ &php_object_storage, NULL TSRMLS_CC); \
+ }
+
/* helpers for setters */
#define IF_SET_STRING(property_name, internal, value) \
if (strcmp(property, property_name)==0) \
More information about the mapserver-commits
mailing list