From 0d68cd5c06fa97a9d403c11e66d3ab99a16bc78d Mon Sep 17 00:00:00 2001
From: Jeff McKenna <jeffmckenna@gmail.com>
Date: Thu, 28 Jun 2012 18:57:19 -0300
Subject: [PATCH] backport PHP 5.4 mapscript updates to branch-6-0

---
 mapscript/php/image.c              | 15 ++++++++++-----
 mapscript/php/php_mapscript.c      |  2 +-
 mapscript/php/php_mapscript_util.c | 14 ++++++++++++--
 3 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/mapscript/php/image.c b/mapscript/php/image.c
index 2c270a2..9ffb1da 100644
--- a/mapscript/php/image.c
+++ b/mapscript/php/image.c
@@ -303,12 +303,17 @@ PHP_METHOD(imageObj, saveImage)
     /* no filename - read stdout */
 
     /* if there is no output buffer active, set the header */
-    if (OG(ob_nesting_level)<=0)
-    {
-        php_header(TSRMLS_C);
-    }
+    //handle changes in PHP 5.4.x
+    #if PHP_VERSION_ID < 50399
+    if (OG(ob_nesting_level)<=0) {
+      php_header(TSRMLS_C);
+      }
+    #else
+    if (php_output_get_level(TSRMLS_C)<=0) {
+      php_header(TSRMLS_C);
+      }
+    #endif
    
-
     if (MS_RENDERER_PLUGIN(php_image->image->format))
     {
         iptr = (void *)msSaveImageBuffer(php_image->image, &size, php_image->image->format);
diff --git a/mapscript/php/php_mapscript.c b/mapscript/php/php_mapscript.c
index 201f3fa..0a57d1a 100644
--- a/mapscript/php/php_mapscript.c
+++ b/mapscript/php/php_mapscript.c
@@ -899,7 +899,7 @@ PHP_FUNCTION(ms_tokenizeMap)
 
 }
 
-function_entry mapscript_functions[] = {
+zend_function_entry mapscript_functions[] = {
     PHP_FE(ms_GetVersion, NULL)
     PHP_FE(ms_GetVersionInt,  NULL)
     PHP_FE(ms_newLineObj, NULL)
diff --git a/mapscript/php/php_mapscript_util.c b/mapscript/php/php_mapscript_util.c
index 528f2c6..fc85bc5 100644
--- a/mapscript/php/php_mapscript_util.c
+++ b/mapscript/php/php_mapscript_util.c
@@ -42,7 +42,12 @@ zend_object_value mapscript_object_new(zend_object *zobj,
     zobj->ce = ce;
     ALLOC_HASHTABLE(zobj->properties);
     zend_hash_init(zobj->properties, 0, NULL, ZVAL_PTR_DTOR, 0);
-    zend_hash_copy(zobj->properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref,(void *) &temp, sizeof(zval *));
+    //handle changes in PHP 5.4.x
+    #if PHP_VERSION_ID < 50399
+      zend_hash_copy(zobj->properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref,(void *) &temp, sizeof(zval *));
+    #else
+      object_properties_init(zobj, ce);
+    #endif
     retval.handle = zend_objects_store_put(zobj, NULL, (zend_objects_free_object_storage_t)zend_objects_free_object, NULL TSRMLS_CC);
     retval.handlers = &mapscript_std_object_handlers;
     return retval;
@@ -59,7 +64,12 @@ zend_object_value mapscript_object_new_ex(zend_object *zobj,
     zobj->ce = ce;
     ALLOC_HASHTABLE(zobj->properties);
     zend_hash_init(zobj->properties, 0, NULL, ZVAL_PTR_DTOR, 0);
-    zend_hash_copy(zobj->properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref,(void *) &temp, sizeof(zval *));
+    //handle changes in PHP 5.4.x
+    #if PHP_VERSION_ID < 50399
+      zend_hash_copy(zobj->properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref,(void *) &temp, sizeof(zval *));
+    #else
+      object_properties_init(zobj, ce);
+    #endif
     retval.handle = zend_objects_store_put(zobj, NULL, (zend_objects_free_object_storage_t)zend_objects_free_object, NULL TSRMLS_CC);
     retval.handlers = object_handlers;
     return retval;
-- 
1.7.11.4

