From fd75c871550e1d760e178e1d6f5adb109d624fb9 Mon Sep 17 00:00:00 2001 From: andresgutierrez Date: Thu, 15 Aug 2013 09:42:56 -0500 Subject: [PATCH 1/6] Disabling error handler --- build/32bits/phalcon.c | 87 +++++++++++++++++++++++++++++------------- build/32bits/phalcon.h | 18 ++++++--- build/64bits/phalcon.c | 87 +++++++++++++++++++++++++++++------------- build/64bits/phalcon.h | 18 ++++++--- build/safe/phalcon.c | 87 +++++++++++++++++++++++++++++------------- build/safe/phalcon.h | 18 ++++++--- ext/install2 | 61 +++++++++++++++++++++++++++++ ext/phalcon.c | 8 ++-- 8 files changed, 280 insertions(+), 104 deletions(-) create mode 100755 ext/install2 diff --git a/build/32bits/phalcon.c b/build/32bits/phalcon.c index b947fe25c8f..6b94fe5ea4b 100644 --- a/build/32bits/phalcon.c +++ b/build/32bits/phalcon.c @@ -22310,7 +22310,6 @@ PHALCON_INIT_CLASS(Phalcon_CLI_Console_Exception){ - #ifdef HAVE_CONFIG_H #endif @@ -26158,7 +26157,6 @@ static PHP_METHOD(Phalcon_Db_Adapter_Pdo, getInternalHandler){ - #ifdef HAVE_CONFIG_H #endif @@ -54504,7 +54502,6 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData_Xcache, write){ - #ifdef HAVE_CONFIG_H #endif @@ -54793,12 +54790,15 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, readMetaDataIndex){ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, writeMetaDataIndex){ - zval *model, *index, *data, *table, *schema, *class_name; - zval *key, *meta_data = NULL; + zval *model, *index, *data, *replace, *table, *schema, *class_name; + zval *key, *meta_data = NULL, *arr, *value; + HashTable *ah2; + HashPosition hp2; + zval **hd; PHALCON_MM_GROW(); - phalcon_fetch_params(1, 3, 0, &model, &index, &data); + phalcon_fetch_params(1, 4, 0, &model, &index, &data, &replace); if (Z_TYPE_P(model) != IS_OBJECT) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "A model instance is required to retrieve the meta-data"); @@ -54837,6 +54837,26 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, writeMetaDataIndex){ PHALCON_OBS_NVAR(meta_data); phalcon_read_property_this_quick(&meta_data, this_ptr, SL("_metaData"), 1295805989UL, PH_NOISY_CC); + } else if (!zend_is_true(replace)) { + PHALCON_OBS_VAR(arr); + phalcon_array_fetch(&arr, meta_data, key, PH_NOISY); + + PHALCON_OBS_VAR(value); + phalcon_array_fetch(&value, arr, index, PH_NOISY); + + PHALCON_SEPARATE_PARAM(data); + phalcon_is_iterable(value, &ah2, &hp2, 0, 0); + + while (zend_hash_get_current_data_ex(ah2, (void**) &hd, &hp2) == SUCCESS) { + + zval key2 = phalcon_get_current_key_w(ah2, &hp2); + + if (!phalcon_array_isset(data, &key2)) { + phalcon_array_update_zval(&data, &key2, hd, PH_COPY | PH_SEPARATE); + } + + zend_hash_move_forward_ex(ah2, &hp2); + } } phalcon_array_update_multi_2(&meta_data, key, index, &data, 0); @@ -55125,30 +55145,30 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getAutomaticUpdateAttributes){ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setAutomaticCreateAttributes){ - zval *model, *attributes, *create_index; + zval *model, *attributes, *replace, *create_index; PHALCON_MM_GROW(); - phalcon_fetch_params(1, 2, 0, &model, &attributes); + phalcon_fetch_params(1, 3, 0, &model, &attributes, &replace); PHALCON_INIT_VAR(create_index); ZVAL_LONG(create_index, 10); - phalcon_call_method_p3_key(NULL, this_ptr, "writemetadataindex", model, create_index, attributes, 3417033257UL); + phalcon_call_method_p4_key(NULL, this_ptr, "writemetadataindex", model, create_index, attributes, replace, 3417033257UL); PHALCON_MM_RESTORE(); } static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setAutomaticUpdateAttributes){ - zval *model, *attributes, *create_index; + zval *model, *attributes, *replace, *create_index; PHALCON_MM_GROW(); - phalcon_fetch_params(1, 2, 0, &model, &attributes); + phalcon_fetch_params(1, 3, 0, &model, &attributes, &replace); PHALCON_INIT_VAR(create_index); ZVAL_LONG(create_index, 11); - phalcon_call_method_p3_key(NULL, this_ptr, "writemetadataindex", model, create_index, attributes, 3417033257UL); + phalcon_call_method_p4_key(NULL, this_ptr, "writemetadataindex", model, create_index, attributes, replace, 3417033257UL); PHALCON_MM_RESTORE(); } @@ -76365,7 +76385,7 @@ static PHP_METHOD(Phalcon_Mvc_Model, writeAttribute){ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributes){ - zval *attributes, *null_value, *keys_attributes; + zval *attributes, *replace = NULL, *null_value, *keys_attributes; zval *attribute = NULL, *meta_data; HashTable *ah0; HashPosition hp0; @@ -76373,12 +76393,17 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributes){ PHALCON_MM_GROW(); - phalcon_fetch_params(1, 1, 0, &attributes); + phalcon_fetch_params(1, 1, 1, &attributes, &replace); if (Z_TYPE_P(attributes) != IS_ARRAY) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Attributes must be an array"); return; } + + if (!replace) { + PHALCON_INIT_VAR(replace); + ZVAL_FALSE(replace); + } PHALCON_INIT_VAR(null_value); @@ -76398,15 +76423,15 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributes){ PHALCON_INIT_VAR(meta_data); phalcon_call_method_key(meta_data, this_ptr, "getmodelsmetadata", 3603043978UL); - phalcon_call_method_p2_key(NULL, meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes, 316109587UL); - phalcon_call_method_p2_key(NULL, meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes, 2859965858UL); + phalcon_call_method_p3_key(NULL, meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes, replace, 316109587UL); + phalcon_call_method_p3_key(NULL, meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes, replace, 2859965858UL); PHALCON_MM_RESTORE(); } static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnCreate){ - zval *attributes, *null_value, *keys_attributes; + zval *attributes, *replace = NULL, *null_value, *keys_attributes; zval *attribute = NULL, *meta_data; HashTable *ah0; HashPosition hp0; @@ -76414,12 +76439,17 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnCreate){ PHALCON_MM_GROW(); - phalcon_fetch_params(1, 1, 0, &attributes); + phalcon_fetch_params(1, 1, 1, &attributes, &replace); if (Z_TYPE_P(attributes) != IS_ARRAY) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Attributes must be an array"); return; } + + if (!replace) { + PHALCON_INIT_VAR(replace); + ZVAL_FALSE(replace); + } PHALCON_INIT_VAR(null_value); @@ -76439,14 +76469,14 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnCreate){ PHALCON_INIT_VAR(meta_data); phalcon_call_method_key(meta_data, this_ptr, "getmodelsmetadata", 3603043978UL); - phalcon_call_method_p2_key(NULL, meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes, 316109587UL); + phalcon_call_method_p3_key(NULL, meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes, replace, 316109587UL); PHALCON_MM_RESTORE(); } static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnUpdate){ - zval *attributes, *null_value, *keys_attributes; + zval *attributes, *replace = NULL, *null_value, *keys_attributes; zval *attribute = NULL, *meta_data; HashTable *ah0; HashPosition hp0; @@ -76454,12 +76484,17 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnUpdate){ PHALCON_MM_GROW(); - phalcon_fetch_params(1, 1, 0, &attributes); + phalcon_fetch_params(1, 1, 1, &attributes, &replace); if (Z_TYPE_P(attributes) != IS_ARRAY) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Attributes must be an array"); return; } + + if (!replace) { + PHALCON_INIT_VAR(replace); + ZVAL_FALSE(replace); + } PHALCON_INIT_VAR(null_value); @@ -76479,7 +76514,7 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnUpdate){ PHALCON_INIT_VAR(meta_data); phalcon_call_method_key(meta_data, this_ptr, "getmodelsmetadata", 3603043978UL); - phalcon_call_method_p2_key(NULL, meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes, 2859965858UL); + phalcon_call_method_p3_key(NULL, meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes, replace, 2859965858UL); PHALCON_MM_RESTORE(); } @@ -100334,10 +100369,8 @@ static void (*old_error_cb)(int, const char *, const uint, const char *, va_list static void phalcon_error_cb(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) { if (type == E_ERROR || type == E_CORE_ERROR || type == E_RECOVERABLE_ERROR || type == E_COMPILE_ERROR || type == E_USER_ERROR) { - #if PHP_VERSION_ID >= 50400 TSRMLS_FETCH(); phalcon_clean_restore_stack(TSRMLS_C); - #endif } if (likely(old_error_cb != NULL)) { @@ -100688,15 +100721,15 @@ static PHP_MINIT_FUNCTION(phalcon){ PHALCON_INIT(Phalcon_Events_Manager); PHALCON_INIT(Phalcon_Events_Exception); - old_error_cb = zend_error_cb; - zend_error_cb = phalcon_error_cb; + //old_error_cb = zend_error_cb; + //zend_error_cb = phalcon_error_cb; return SUCCESS; } static PHP_MSHUTDOWN_FUNCTION(phalcon){ - zend_error_cb = old_error_cb; + //zend_error_cb = old_error_cb; assert(PHALCON_GLOBAL(function_cache) == NULL); assert(PHALCON_GLOBAL(orm).parser_cache == NULL); diff --git a/build/32bits/phalcon.h b/build/32bits/phalcon.h index 5b330a76041..1eb074a5e78 100644 --- a/build/32bits/phalcon.h +++ b/build/32bits/phalcon.h @@ -315,10 +315,11 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_readmetadatai ZEND_ARG_INFO(0, index) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_writemetadataindex, 0, 0, 3) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_writemetadataindex, 0, 0, 4) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, index) ZEND_ARG_INFO(0, data) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_readcolumnmap, 0, 0, 1) @@ -370,14 +371,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_getautomaticu ZEND_ARG_INFO(0, model) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticcreateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticcreateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticupdateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticupdateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_getcolumnmap, 0, 0, 1) @@ -4175,10 +4178,11 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_readmetadataindex, 0, ZEND_ARG_INFO(0, index) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_writemetadataindex, 0, 0, 3) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_writemetadataindex, 0, 0, 4) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, index) ZEND_ARG_INFO(0, data) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_readcolumnmap, 0, 0, 1) @@ -4230,14 +4234,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_getautomaticupdateattr ZEND_ARG_INFO(0, model) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticcreateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticcreateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticupdateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticupdateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_getcolumnmap, 0, 0, 1) diff --git a/build/64bits/phalcon.c b/build/64bits/phalcon.c index 2f8f0d49dfa..51e038d8b1a 100644 --- a/build/64bits/phalcon.c +++ b/build/64bits/phalcon.c @@ -22310,7 +22310,6 @@ PHALCON_INIT_CLASS(Phalcon_CLI_Console_Exception){ - #ifdef HAVE_CONFIG_H #endif @@ -26158,7 +26157,6 @@ static PHP_METHOD(Phalcon_Db_Adapter_Pdo, getInternalHandler){ - #ifdef HAVE_CONFIG_H #endif @@ -54504,7 +54502,6 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData_Xcache, write){ - #ifdef HAVE_CONFIG_H #endif @@ -54793,12 +54790,15 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, readMetaDataIndex){ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, writeMetaDataIndex){ - zval *model, *index, *data, *table, *schema, *class_name; - zval *key, *meta_data = NULL; + zval *model, *index, *data, *replace, *table, *schema, *class_name; + zval *key, *meta_data = NULL, *arr, *value; + HashTable *ah2; + HashPosition hp2; + zval **hd; PHALCON_MM_GROW(); - phalcon_fetch_params(1, 3, 0, &model, &index, &data); + phalcon_fetch_params(1, 4, 0, &model, &index, &data, &replace); if (Z_TYPE_P(model) != IS_OBJECT) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "A model instance is required to retrieve the meta-data"); @@ -54837,6 +54837,26 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, writeMetaDataIndex){ PHALCON_OBS_NVAR(meta_data); phalcon_read_property_this_quick(&meta_data, this_ptr, SL("_metaData"), 8245993367418990117UL, PH_NOISY_CC); + } else if (!zend_is_true(replace)) { + PHALCON_OBS_VAR(arr); + phalcon_array_fetch(&arr, meta_data, key, PH_NOISY); + + PHALCON_OBS_VAR(value); + phalcon_array_fetch(&value, arr, index, PH_NOISY); + + PHALCON_SEPARATE_PARAM(data); + phalcon_is_iterable(value, &ah2, &hp2, 0, 0); + + while (zend_hash_get_current_data_ex(ah2, (void**) &hd, &hp2) == SUCCESS) { + + zval key2 = phalcon_get_current_key_w(ah2, &hp2); + + if (!phalcon_array_isset(data, &key2)) { + phalcon_array_update_zval(&data, &key2, hd, PH_COPY | PH_SEPARATE); + } + + zend_hash_move_forward_ex(ah2, &hp2); + } } phalcon_array_update_multi_2(&meta_data, key, index, &data, 0); @@ -55125,30 +55145,30 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getAutomaticUpdateAttributes){ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setAutomaticCreateAttributes){ - zval *model, *attributes, *create_index; + zval *model, *attributes, *replace, *create_index; PHALCON_MM_GROW(); - phalcon_fetch_params(1, 2, 0, &model, &attributes); + phalcon_fetch_params(1, 3, 0, &model, &attributes, &replace); PHALCON_INIT_VAR(create_index); ZVAL_LONG(create_index, 10); - phalcon_call_method_p3_key(NULL, this_ptr, "writemetadataindex", model, create_index, attributes, 9030866976090343977UL); + phalcon_call_method_p4_key(NULL, this_ptr, "writemetadataindex", model, create_index, attributes, replace, 9030866976090343977UL); PHALCON_MM_RESTORE(); } static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setAutomaticUpdateAttributes){ - zval *model, *attributes, *create_index; + zval *model, *attributes, *replace, *create_index; PHALCON_MM_GROW(); - phalcon_fetch_params(1, 2, 0, &model, &attributes); + phalcon_fetch_params(1, 3, 0, &model, &attributes, &replace); PHALCON_INIT_VAR(create_index); ZVAL_LONG(create_index, 11); - phalcon_call_method_p3_key(NULL, this_ptr, "writemetadataindex", model, create_index, attributes, 9030866976090343977UL); + phalcon_call_method_p4_key(NULL, this_ptr, "writemetadataindex", model, create_index, attributes, replace, 9030866976090343977UL); PHALCON_MM_RESTORE(); } @@ -76365,7 +76385,7 @@ static PHP_METHOD(Phalcon_Mvc_Model, writeAttribute){ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributes){ - zval *attributes, *null_value, *keys_attributes; + zval *attributes, *replace = NULL, *null_value, *keys_attributes; zval *attribute = NULL, *meta_data; HashTable *ah0; HashPosition hp0; @@ -76373,12 +76393,17 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributes){ PHALCON_MM_GROW(); - phalcon_fetch_params(1, 1, 0, &attributes); + phalcon_fetch_params(1, 1, 1, &attributes, &replace); if (Z_TYPE_P(attributes) != IS_ARRAY) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Attributes must be an array"); return; } + + if (!replace) { + PHALCON_INIT_VAR(replace); + ZVAL_FALSE(replace); + } PHALCON_INIT_VAR(null_value); @@ -76398,15 +76423,15 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributes){ PHALCON_INIT_VAR(meta_data); phalcon_call_method_key(meta_data, this_ptr, "getmodelsmetadata", 9556548149850543754UL); - phalcon_call_method_p2_key(NULL, meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes, 13334387034934440723UL); - phalcon_call_method_p2_key(NULL, meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes, 17213414363205442978UL); + phalcon_call_method_p3_key(NULL, meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes, replace, 13334387034934440723UL); + phalcon_call_method_p3_key(NULL, meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes, replace, 17213414363205442978UL); PHALCON_MM_RESTORE(); } static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnCreate){ - zval *attributes, *null_value, *keys_attributes; + zval *attributes, *replace = NULL, *null_value, *keys_attributes; zval *attribute = NULL, *meta_data; HashTable *ah0; HashPosition hp0; @@ -76414,12 +76439,17 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnCreate){ PHALCON_MM_GROW(); - phalcon_fetch_params(1, 1, 0, &attributes); + phalcon_fetch_params(1, 1, 1, &attributes, &replace); if (Z_TYPE_P(attributes) != IS_ARRAY) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Attributes must be an array"); return; } + + if (!replace) { + PHALCON_INIT_VAR(replace); + ZVAL_FALSE(replace); + } PHALCON_INIT_VAR(null_value); @@ -76439,14 +76469,14 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnCreate){ PHALCON_INIT_VAR(meta_data); phalcon_call_method_key(meta_data, this_ptr, "getmodelsmetadata", 9556548149850543754UL); - phalcon_call_method_p2_key(NULL, meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes, 13334387034934440723UL); + phalcon_call_method_p3_key(NULL, meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes, replace, 13334387034934440723UL); PHALCON_MM_RESTORE(); } static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnUpdate){ - zval *attributes, *null_value, *keys_attributes; + zval *attributes, *replace = NULL, *null_value, *keys_attributes; zval *attribute = NULL, *meta_data; HashTable *ah0; HashPosition hp0; @@ -76454,12 +76484,17 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnUpdate){ PHALCON_MM_GROW(); - phalcon_fetch_params(1, 1, 0, &attributes); + phalcon_fetch_params(1, 1, 1, &attributes, &replace); if (Z_TYPE_P(attributes) != IS_ARRAY) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Attributes must be an array"); return; } + + if (!replace) { + PHALCON_INIT_VAR(replace); + ZVAL_FALSE(replace); + } PHALCON_INIT_VAR(null_value); @@ -76479,7 +76514,7 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnUpdate){ PHALCON_INIT_VAR(meta_data); phalcon_call_method_key(meta_data, this_ptr, "getmodelsmetadata", 9556548149850543754UL); - phalcon_call_method_p2_key(NULL, meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes, 17213414363205442978UL); + phalcon_call_method_p3_key(NULL, meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes, replace, 17213414363205442978UL); PHALCON_MM_RESTORE(); } @@ -100334,10 +100369,8 @@ static void (*old_error_cb)(int, const char *, const uint, const char *, va_list static void phalcon_error_cb(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) { if (type == E_ERROR || type == E_CORE_ERROR || type == E_RECOVERABLE_ERROR || type == E_COMPILE_ERROR || type == E_USER_ERROR) { - #if PHP_VERSION_ID >= 50400 TSRMLS_FETCH(); phalcon_clean_restore_stack(TSRMLS_C); - #endif } if (likely(old_error_cb != NULL)) { @@ -100688,15 +100721,15 @@ static PHP_MINIT_FUNCTION(phalcon){ PHALCON_INIT(Phalcon_Events_Manager); PHALCON_INIT(Phalcon_Events_Exception); - old_error_cb = zend_error_cb; - zend_error_cb = phalcon_error_cb; + //old_error_cb = zend_error_cb; + //zend_error_cb = phalcon_error_cb; return SUCCESS; } static PHP_MSHUTDOWN_FUNCTION(phalcon){ - zend_error_cb = old_error_cb; + //zend_error_cb = old_error_cb; assert(PHALCON_GLOBAL(function_cache) == NULL); assert(PHALCON_GLOBAL(orm).parser_cache == NULL); diff --git a/build/64bits/phalcon.h b/build/64bits/phalcon.h index 5b330a76041..1eb074a5e78 100644 --- a/build/64bits/phalcon.h +++ b/build/64bits/phalcon.h @@ -315,10 +315,11 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_readmetadatai ZEND_ARG_INFO(0, index) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_writemetadataindex, 0, 0, 3) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_writemetadataindex, 0, 0, 4) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, index) ZEND_ARG_INFO(0, data) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_readcolumnmap, 0, 0, 1) @@ -370,14 +371,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_getautomaticu ZEND_ARG_INFO(0, model) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticcreateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticcreateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticupdateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticupdateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_getcolumnmap, 0, 0, 1) @@ -4175,10 +4178,11 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_readmetadataindex, 0, ZEND_ARG_INFO(0, index) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_writemetadataindex, 0, 0, 3) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_writemetadataindex, 0, 0, 4) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, index) ZEND_ARG_INFO(0, data) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_readcolumnmap, 0, 0, 1) @@ -4230,14 +4234,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_getautomaticupdateattr ZEND_ARG_INFO(0, model) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticcreateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticcreateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticupdateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticupdateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_getcolumnmap, 0, 0, 1) diff --git a/build/safe/phalcon.c b/build/safe/phalcon.c index 82e861c1293..ffbfeedf36d 100644 --- a/build/safe/phalcon.c +++ b/build/safe/phalcon.c @@ -22310,7 +22310,6 @@ PHALCON_INIT_CLASS(Phalcon_CLI_Console_Exception){ - #ifdef HAVE_CONFIG_H #endif @@ -26158,7 +26157,6 @@ static PHP_METHOD(Phalcon_Db_Adapter_Pdo, getInternalHandler){ - #ifdef HAVE_CONFIG_H #endif @@ -54504,7 +54502,6 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData_Xcache, write){ - #ifdef HAVE_CONFIG_H #endif @@ -54793,12 +54790,15 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, readMetaDataIndex){ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, writeMetaDataIndex){ - zval *model, *index, *data, *table, *schema, *class_name; - zval *key, *meta_data = NULL; + zval *model, *index, *data, *replace, *table, *schema, *class_name; + zval *key, *meta_data = NULL, *arr, *value; + HashTable *ah2; + HashPosition hp2; + zval **hd; PHALCON_MM_GROW(); - phalcon_fetch_params(1, 3, 0, &model, &index, &data); + phalcon_fetch_params(1, 4, 0, &model, &index, &data, &replace); if (Z_TYPE_P(model) != IS_OBJECT) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "A model instance is required to retrieve the meta-data"); @@ -54837,6 +54837,26 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, writeMetaDataIndex){ PHALCON_OBS_NVAR(meta_data); phalcon_read_property_this(&meta_data, this_ptr, SL("_metaData"), PH_NOISY_CC); + } else if (!zend_is_true(replace)) { + PHALCON_OBS_VAR(arr); + phalcon_array_fetch(&arr, meta_data, key, PH_NOISY); + + PHALCON_OBS_VAR(value); + phalcon_array_fetch(&value, arr, index, PH_NOISY); + + PHALCON_SEPARATE_PARAM(data); + phalcon_is_iterable(value, &ah2, &hp2, 0, 0); + + while (zend_hash_get_current_data_ex(ah2, (void**) &hd, &hp2) == SUCCESS) { + + zval key2 = phalcon_get_current_key_w(ah2, &hp2); + + if (!phalcon_array_isset(data, &key2)) { + phalcon_array_update_zval(&data, &key2, hd, PH_COPY | PH_SEPARATE); + } + + zend_hash_move_forward_ex(ah2, &hp2); + } } phalcon_array_update_multi_2(&meta_data, key, index, &data, 0); @@ -55125,30 +55145,30 @@ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getAutomaticUpdateAttributes){ static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setAutomaticCreateAttributes){ - zval *model, *attributes, *create_index; + zval *model, *attributes, *replace, *create_index; PHALCON_MM_GROW(); - phalcon_fetch_params(1, 2, 0, &model, &attributes); + phalcon_fetch_params(1, 3, 0, &model, &attributes, &replace); PHALCON_INIT_VAR(create_index); ZVAL_LONG(create_index, 10); - phalcon_call_method_p3_noret(this_ptr, "writemetadataindex", model, create_index, attributes); + phalcon_call_method_p4_noret(this_ptr, "writemetadataindex", model, create_index, attributes, replace); PHALCON_MM_RESTORE(); } static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setAutomaticUpdateAttributes){ - zval *model, *attributes, *create_index; + zval *model, *attributes, *replace, *create_index; PHALCON_MM_GROW(); - phalcon_fetch_params(1, 2, 0, &model, &attributes); + phalcon_fetch_params(1, 3, 0, &model, &attributes, &replace); PHALCON_INIT_VAR(create_index); ZVAL_LONG(create_index, 11); - phalcon_call_method_p3_noret(this_ptr, "writemetadataindex", model, create_index, attributes); + phalcon_call_method_p4_noret(this_ptr, "writemetadataindex", model, create_index, attributes, replace); PHALCON_MM_RESTORE(); } @@ -76365,7 +76385,7 @@ static PHP_METHOD(Phalcon_Mvc_Model, writeAttribute){ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributes){ - zval *attributes, *null_value, *keys_attributes; + zval *attributes, *replace = NULL, *null_value, *keys_attributes; zval *attribute = NULL, *meta_data; HashTable *ah0; HashPosition hp0; @@ -76373,12 +76393,17 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributes){ PHALCON_MM_GROW(); - phalcon_fetch_params(1, 1, 0, &attributes); + phalcon_fetch_params(1, 1, 1, &attributes, &replace); if (Z_TYPE_P(attributes) != IS_ARRAY) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Attributes must be an array"); return; } + + if (!replace) { + PHALCON_INIT_VAR(replace); + ZVAL_FALSE(replace); + } PHALCON_INIT_VAR(null_value); @@ -76398,15 +76423,15 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributes){ PHALCON_INIT_VAR(meta_data); phalcon_call_method(meta_data, this_ptr, "getmodelsmetadata"); - phalcon_call_method_p2_noret(meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes); - phalcon_call_method_p2_noret(meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes); + phalcon_call_method_p3_noret(meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes, replace); + phalcon_call_method_p3_noret(meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes, replace); PHALCON_MM_RESTORE(); } static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnCreate){ - zval *attributes, *null_value, *keys_attributes; + zval *attributes, *replace = NULL, *null_value, *keys_attributes; zval *attribute = NULL, *meta_data; HashTable *ah0; HashPosition hp0; @@ -76414,12 +76439,17 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnCreate){ PHALCON_MM_GROW(); - phalcon_fetch_params(1, 1, 0, &attributes); + phalcon_fetch_params(1, 1, 1, &attributes, &replace); if (Z_TYPE_P(attributes) != IS_ARRAY) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Attributes must be an array"); return; } + + if (!replace) { + PHALCON_INIT_VAR(replace); + ZVAL_FALSE(replace); + } PHALCON_INIT_VAR(null_value); @@ -76439,14 +76469,14 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnCreate){ PHALCON_INIT_VAR(meta_data); phalcon_call_method(meta_data, this_ptr, "getmodelsmetadata"); - phalcon_call_method_p2_noret(meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes); + phalcon_call_method_p3_noret(meta_data, "setautomaticcreateattributes", this_ptr, keys_attributes, replace); PHALCON_MM_RESTORE(); } static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnUpdate){ - zval *attributes, *null_value, *keys_attributes; + zval *attributes, *replace = NULL, *null_value, *keys_attributes; zval *attribute = NULL, *meta_data; HashTable *ah0; HashPosition hp0; @@ -76454,12 +76484,17 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnUpdate){ PHALCON_MM_GROW(); - phalcon_fetch_params(1, 1, 0, &attributes); + phalcon_fetch_params(1, 1, 1, &attributes, &replace); if (Z_TYPE_P(attributes) != IS_ARRAY) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Attributes must be an array"); return; } + + if (!replace) { + PHALCON_INIT_VAR(replace); + ZVAL_FALSE(replace); + } PHALCON_INIT_VAR(null_value); @@ -76479,7 +76514,7 @@ static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnUpdate){ PHALCON_INIT_VAR(meta_data); phalcon_call_method(meta_data, this_ptr, "getmodelsmetadata"); - phalcon_call_method_p2_noret(meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes); + phalcon_call_method_p3_noret(meta_data, "setautomaticupdateattributes", this_ptr, keys_attributes, replace); PHALCON_MM_RESTORE(); } @@ -100334,10 +100369,8 @@ static void (*old_error_cb)(int, const char *, const uint, const char *, va_list static void phalcon_error_cb(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) { if (type == E_ERROR || type == E_CORE_ERROR || type == E_RECOVERABLE_ERROR || type == E_COMPILE_ERROR || type == E_USER_ERROR) { - #if PHP_VERSION_ID >= 50400 TSRMLS_FETCH(); phalcon_clean_restore_stack(TSRMLS_C); - #endif } if (likely(old_error_cb != NULL)) { @@ -100688,15 +100721,15 @@ static PHP_MINIT_FUNCTION(phalcon){ PHALCON_INIT(Phalcon_Events_Manager); PHALCON_INIT(Phalcon_Events_Exception); - old_error_cb = zend_error_cb; - zend_error_cb = phalcon_error_cb; + //old_error_cb = zend_error_cb; + //zend_error_cb = phalcon_error_cb; return SUCCESS; } static PHP_MSHUTDOWN_FUNCTION(phalcon){ - zend_error_cb = old_error_cb; + //zend_error_cb = old_error_cb; assert(PHALCON_GLOBAL(function_cache) == NULL); assert(PHALCON_GLOBAL(orm).parser_cache == NULL); diff --git a/build/safe/phalcon.h b/build/safe/phalcon.h index 5b330a76041..1eb074a5e78 100644 --- a/build/safe/phalcon.h +++ b/build/safe/phalcon.h @@ -315,10 +315,11 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_readmetadatai ZEND_ARG_INFO(0, index) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_writemetadataindex, 0, 0, 3) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_writemetadataindex, 0, 0, 4) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, index) ZEND_ARG_INFO(0, data) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_readcolumnmap, 0, 0, 1) @@ -370,14 +371,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_getautomaticu ZEND_ARG_INFO(0, model) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticcreateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticcreateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticupdateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_setautomaticupdateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadatainterface_getcolumnmap, 0, 0, 1) @@ -4175,10 +4178,11 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_readmetadataindex, 0, ZEND_ARG_INFO(0, index) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_writemetadataindex, 0, 0, 3) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_writemetadataindex, 0, 0, 4) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, index) ZEND_ARG_INFO(0, data) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_readcolumnmap, 0, 0, 1) @@ -4230,14 +4234,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_getautomaticupdateattr ZEND_ARG_INFO(0, model) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticcreateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticcreateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticupdateattributes, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_setautomaticupdateattributes, 0, 0, 3) ZEND_ARG_INFO(0, model) ZEND_ARG_INFO(0, attributes) + ZEND_ARG_INFO(0, replace) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_metadata_getcolumnmap, 0, 0, 1) diff --git a/ext/install2 b/ext/install2 new file mode 100755 index 00000000000..a2ddafd76ab --- /dev/null +++ b/ext/install2 @@ -0,0 +1,61 @@ +#!/bin/bash + +# Phalcon Framework +# +# Copyright (c) 2011-2013 Phalcon Team (http://www.phalconphp.com) +# +# This source file is subject to the New BSD License that is bundled +# with this package in the file docs/LICENSE.txt. +# +# If you did not receive a copy of the license and are unable to +# obtain it through the world-wide-web, please send an email +# to license@phalconphp.com so we can send you a copy immediately. +# +# Authors: Andres Gutierrez +# Eduar Carvajal + +export GCC_GENERATE_TEST_COVERAGE_FILES="YES" +export GCC_INSTRUMENT_PROGRAM_FLOW_ARCS="YES" + +export CC="gcc" +#export CFLAGS="-march=native -mtune=native -O2 -fno-delete-null-pointer-checks -finline-functions -fno-builtin-memcmp -fomit-frame-pointer -fvisibility=hidden" +#echo "int main() {}" > t.c +#gcc $CFLAGS t.c -o t 2> t.t +#if [ $? != 0 ]; then +# chmod +x gcccpuopt +# BFLAGS=`./gcccpuopt` +# export CFLAGS="-O2 -fno-delete-null-pointer-checks -finline-functions $BFLAGS -fno-builtin-memcmp -fvisibility=hidden" +# gcc $CFLAGS t.c -o t 2> t.t +# if [ $? != 0 ]; then +# export CFLAGS="-O2 -fno-delete-null-pointer-checks" +# fi +#fi +#rm -f t.t t.c t + +#Check processor architecture +#if [ -z $1 ]; then +# DIR="32bits" +# gcc gccarch.c -o gccarch +# if [ -f gccarch ]; then +# P64BITS=`./gccarch` +# if [ "$P64BITS" == "1" ]; then +# DIR="64bits" +# fi +# fi +#else +# DIR=$1 +#fi +# +#Move to specified architecture +#cd $DIR + +export CFLAGS="-O0 -g -fno-delete-null-pointer-checks" + +#Clean current compilation +if [ -f Makefile ]; then + make clean + phpize55 --clean +fi + +#Perform the compilation +phpize55 && ./configure --enable-phalcon --with-php-config=/opt/local/bin/php-config55 && make && make install && echo -e "\nThanks for compiling Phalcon!\nBuild succeed: Please restart your web server to complete the installation" diff --git a/ext/phalcon.c b/ext/phalcon.c index 796aa67f500..2009903431f 100644 --- a/ext/phalcon.c +++ b/ext/phalcon.c @@ -351,10 +351,8 @@ static void (*old_error_cb)(int, const char *, const uint, const char *, va_list static void phalcon_error_cb(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) { if (type == E_ERROR || type == E_CORE_ERROR || type == E_RECOVERABLE_ERROR || type == E_COMPILE_ERROR || type == E_USER_ERROR) { - #if PHP_VERSION_ID >= 50400 TSRMLS_FETCH(); phalcon_clean_restore_stack(TSRMLS_C); - #endif } if (likely(old_error_cb != NULL)) { @@ -710,15 +708,15 @@ static PHP_MINIT_FUNCTION(phalcon){ PHALCON_INIT(Phalcon_Events_Manager); PHALCON_INIT(Phalcon_Events_Exception); - old_error_cb = zend_error_cb; - zend_error_cb = phalcon_error_cb; + //old_error_cb = zend_error_cb; + //zend_error_cb = phalcon_error_cb; return SUCCESS; } static PHP_MSHUTDOWN_FUNCTION(phalcon){ - zend_error_cb = old_error_cb; + //zend_error_cb = old_error_cb; assert(PHALCON_GLOBAL(function_cache) == NULL); assert(PHALCON_GLOBAL(orm).parser_cache == NULL); From e55974c2ed52491b99b941804773114be2f52669 Mon Sep 17 00:00:00 2001 From: andresgutierrez Date: Thu, 15 Aug 2013 11:49:15 -0500 Subject: [PATCH 2/6] Fixing possible bug cleaning memory stack --- build/32bits/phalcon.c | 4 ++-- build/64bits/phalcon.c | 4 ++-- build/safe/phalcon.c | 4 ++-- ext/phalcon.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/build/32bits/phalcon.c b/build/32bits/phalcon.c index 6b94fe5ea4b..5c47a0d2d95 100644 --- a/build/32bits/phalcon.c +++ b/build/32bits/phalcon.c @@ -100747,9 +100747,9 @@ static PHP_RINIT_FUNCTION(phalcon){ static PHP_RSHUTDOWN_FUNCTION(phalcon){ - if (PHALCON_GLOBAL(start_memory) != NULL) { + /*if (PHALCON_GLOBAL(start_memory) != NULL) { phalcon_clean_restore_stack(TSRMLS_C); - } + }*/ if (PHALCON_GLOBAL(function_cache) != NULL) { zend_hash_destroy(PHALCON_GLOBAL(function_cache)); diff --git a/build/64bits/phalcon.c b/build/64bits/phalcon.c index 51e038d8b1a..e5eac116779 100644 --- a/build/64bits/phalcon.c +++ b/build/64bits/phalcon.c @@ -100747,9 +100747,9 @@ static PHP_RINIT_FUNCTION(phalcon){ static PHP_RSHUTDOWN_FUNCTION(phalcon){ - if (PHALCON_GLOBAL(start_memory) != NULL) { + /*if (PHALCON_GLOBAL(start_memory) != NULL) { phalcon_clean_restore_stack(TSRMLS_C); - } + }*/ if (PHALCON_GLOBAL(function_cache) != NULL) { zend_hash_destroy(PHALCON_GLOBAL(function_cache)); diff --git a/build/safe/phalcon.c b/build/safe/phalcon.c index ffbfeedf36d..dbc4b05e8a8 100644 --- a/build/safe/phalcon.c +++ b/build/safe/phalcon.c @@ -100747,9 +100747,9 @@ static PHP_RINIT_FUNCTION(phalcon){ static PHP_RSHUTDOWN_FUNCTION(phalcon){ - if (PHALCON_GLOBAL(start_memory) != NULL) { + /*if (PHALCON_GLOBAL(start_memory) != NULL) { phalcon_clean_restore_stack(TSRMLS_C); - } + }*/ if (PHALCON_GLOBAL(function_cache) != NULL) { zend_hash_destroy(PHALCON_GLOBAL(function_cache)); diff --git a/ext/phalcon.c b/ext/phalcon.c index 2009903431f..05be45cda48 100644 --- a/ext/phalcon.c +++ b/ext/phalcon.c @@ -734,9 +734,9 @@ static PHP_RINIT_FUNCTION(phalcon){ static PHP_RSHUTDOWN_FUNCTION(phalcon){ - if (PHALCON_GLOBAL(start_memory) != NULL) { + /*if (PHALCON_GLOBAL(start_memory) != NULL) { phalcon_clean_restore_stack(TSRMLS_C); - } + }*/ if (PHALCON_GLOBAL(function_cache) != NULL) { zend_hash_destroy(PHALCON_GLOBAL(function_cache)); From f722853328bf2583669bba6eacf3382e9ae04d05 Mon Sep 17 00:00:00 2001 From: andresgutierrez Date: Thu, 15 Aug 2013 12:25:49 -0500 Subject: [PATCH 3/6] Fixing possible bug cleaning memory stack (2) --- build/32bits/phalcon.c | 63 +++++++++++++++++++++++++++++++++++++---- build/64bits/phalcon.c | 63 +++++++++++++++++++++++++++++++++++++---- build/safe/phalcon.c | 63 +++++++++++++++++++++++++++++++++++++---- ext/kernel/memory.c | 64 ++++++++++++++++++++++++++++++++++++++++-- ext/kernel/memory.h | 1 + ext/phalcon.c | 6 ++-- 6 files changed, 239 insertions(+), 21 deletions(-) diff --git a/build/32bits/phalcon.c b/build/32bits/phalcon.c index 5c47a0d2d95..d35e49f1a1b 100644 --- a/build/32bits/phalcon.c +++ b/build/32bits/phalcon.c @@ -1199,6 +1199,7 @@ static void PHALCON_FASTCALL phalcon_memory_alloc(zval **var TSRMLS_DC); static void PHALCON_FASTCALL phalcon_memory_alloc_pnull(zval **var TSRMLS_DC); static int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D); +static int PHALCON_FASTCALL phalcon_clean_restore_stack_shutdown(TSRMLS_D); /* Virtual symbol tables */ static void phalcon_create_symbol_table(TSRMLS_D); @@ -2522,10 +2523,10 @@ static void PHALCON_FASTCALL phalcon_memory_grow_stack(TSRMLS_D) { zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; assert(phalcon_globals_ptr->start_memory != NULL); + if (!phalcon_globals_ptr->active_memory) { phalcon_globals_ptr->active_memory = phalcon_globals_ptr->start_memory; - } - else { + } else { phalcon_memory_entry *entry = (phalcon_memory_entry *) ecalloc(1, sizeof(phalcon_memory_entry)); /* ecalloc() will take care of these members entry->pointer = 0; @@ -2690,6 +2691,58 @@ static int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D) { return SUCCESS; } +static int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { + + size_t i; + phalcon_memory_entry *prev, *active_memory; + phalcon_symbol_table *active_symbol_table; + zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; + + active_memory = phalcon_globals_ptr->active_memory; + if (unlikely(active_memory == NULL)) { +#ifndef PHALCON_RELEASE + fprintf(stderr, "WARNING: calling phalcon_memory_restore_stack() without an active memory frame!\n"); + phalcon_print_backtrace(); +#endif + return FAILURE; + } + + prev = active_memory->prev; + + if (prev != NULL) { + if (active_memory->hash_addresses != NULL) { + efree(active_memory->hash_addresses); + } + + if (likely(active_memory->addresses != NULL)) { + efree(active_memory->addresses); + } + + efree(phalcon_globals_ptr->active_memory); + phalcon_globals_ptr->active_memory = prev; + prev->next = NULL; + } else { + assert(phalcon_globals_ptr->start_memory == active_memory); + assert(active_memory->next == NULL); + active_memory->pointer = 0; + active_memory->hash_pointer = 0; + phalcon_globals_ptr->active_memory = NULL; + } + + return SUCCESS; +} + +static int PHALCON_FASTCALL phalcon_clean_restore_stack_shutdown(TSRMLS_D) { + + zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; + + while (phalcon_globals_ptr->active_memory != NULL) { + phalcon_memory_restore_stack_shutdown(TSRMLS_C); + } + + return SUCCESS; +} + static void PHALCON_FASTCALL phalcon_copy_ctor(zval *destination, zval *origin) { if (Z_REFCOUNT_P(origin) > 1) { zval_copy_ctor(destination); @@ -100747,9 +100800,9 @@ static PHP_RINIT_FUNCTION(phalcon){ static PHP_RSHUTDOWN_FUNCTION(phalcon){ - /*if (PHALCON_GLOBAL(start_memory) != NULL) { - phalcon_clean_restore_stack(TSRMLS_C); - }*/ + if (PHALCON_GLOBAL(start_memory) != NULL) { + phalcon_clean_restore_stack_shutdown(TSRMLS_C); + } if (PHALCON_GLOBAL(function_cache) != NULL) { zend_hash_destroy(PHALCON_GLOBAL(function_cache)); diff --git a/build/64bits/phalcon.c b/build/64bits/phalcon.c index e5eac116779..46663dc6264 100644 --- a/build/64bits/phalcon.c +++ b/build/64bits/phalcon.c @@ -1199,6 +1199,7 @@ static void PHALCON_FASTCALL phalcon_memory_alloc(zval **var TSRMLS_DC); static void PHALCON_FASTCALL phalcon_memory_alloc_pnull(zval **var TSRMLS_DC); static int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D); +static int PHALCON_FASTCALL phalcon_clean_restore_stack_shutdown(TSRMLS_D); /* Virtual symbol tables */ static void phalcon_create_symbol_table(TSRMLS_D); @@ -2522,10 +2523,10 @@ static void PHALCON_FASTCALL phalcon_memory_grow_stack(TSRMLS_D) { zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; assert(phalcon_globals_ptr->start_memory != NULL); + if (!phalcon_globals_ptr->active_memory) { phalcon_globals_ptr->active_memory = phalcon_globals_ptr->start_memory; - } - else { + } else { phalcon_memory_entry *entry = (phalcon_memory_entry *) ecalloc(1, sizeof(phalcon_memory_entry)); /* ecalloc() will take care of these members entry->pointer = 0; @@ -2690,6 +2691,58 @@ static int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D) { return SUCCESS; } +static int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { + + size_t i; + phalcon_memory_entry *prev, *active_memory; + phalcon_symbol_table *active_symbol_table; + zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; + + active_memory = phalcon_globals_ptr->active_memory; + if (unlikely(active_memory == NULL)) { +#ifndef PHALCON_RELEASE + fprintf(stderr, "WARNING: calling phalcon_memory_restore_stack() without an active memory frame!\n"); + phalcon_print_backtrace(); +#endif + return FAILURE; + } + + prev = active_memory->prev; + + if (prev != NULL) { + if (active_memory->hash_addresses != NULL) { + efree(active_memory->hash_addresses); + } + + if (likely(active_memory->addresses != NULL)) { + efree(active_memory->addresses); + } + + efree(phalcon_globals_ptr->active_memory); + phalcon_globals_ptr->active_memory = prev; + prev->next = NULL; + } else { + assert(phalcon_globals_ptr->start_memory == active_memory); + assert(active_memory->next == NULL); + active_memory->pointer = 0; + active_memory->hash_pointer = 0; + phalcon_globals_ptr->active_memory = NULL; + } + + return SUCCESS; +} + +static int PHALCON_FASTCALL phalcon_clean_restore_stack_shutdown(TSRMLS_D) { + + zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; + + while (phalcon_globals_ptr->active_memory != NULL) { + phalcon_memory_restore_stack_shutdown(TSRMLS_C); + } + + return SUCCESS; +} + static void PHALCON_FASTCALL phalcon_copy_ctor(zval *destination, zval *origin) { if (Z_REFCOUNT_P(origin) > 1) { zval_copy_ctor(destination); @@ -100747,9 +100800,9 @@ static PHP_RINIT_FUNCTION(phalcon){ static PHP_RSHUTDOWN_FUNCTION(phalcon){ - /*if (PHALCON_GLOBAL(start_memory) != NULL) { - phalcon_clean_restore_stack(TSRMLS_C); - }*/ + if (PHALCON_GLOBAL(start_memory) != NULL) { + phalcon_clean_restore_stack_shutdown(TSRMLS_C); + } if (PHALCON_GLOBAL(function_cache) != NULL) { zend_hash_destroy(PHALCON_GLOBAL(function_cache)); diff --git a/build/safe/phalcon.c b/build/safe/phalcon.c index dbc4b05e8a8..7d885b5a3a9 100644 --- a/build/safe/phalcon.c +++ b/build/safe/phalcon.c @@ -1199,6 +1199,7 @@ static void PHALCON_FASTCALL phalcon_memory_alloc(zval **var TSRMLS_DC); static void PHALCON_FASTCALL phalcon_memory_alloc_pnull(zval **var TSRMLS_DC); static int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D); +static int PHALCON_FASTCALL phalcon_clean_restore_stack_shutdown(TSRMLS_D); /* Virtual symbol tables */ static void phalcon_create_symbol_table(TSRMLS_D); @@ -2522,10 +2523,10 @@ static void PHALCON_FASTCALL phalcon_memory_grow_stack(TSRMLS_D) { zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; assert(phalcon_globals_ptr->start_memory != NULL); + if (!phalcon_globals_ptr->active_memory) { phalcon_globals_ptr->active_memory = phalcon_globals_ptr->start_memory; - } - else { + } else { phalcon_memory_entry *entry = (phalcon_memory_entry *) ecalloc(1, sizeof(phalcon_memory_entry)); /* ecalloc() will take care of these members entry->pointer = 0; @@ -2690,6 +2691,58 @@ static int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D) { return SUCCESS; } +static int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { + + size_t i; + phalcon_memory_entry *prev, *active_memory; + phalcon_symbol_table *active_symbol_table; + zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; + + active_memory = phalcon_globals_ptr->active_memory; + if (unlikely(active_memory == NULL)) { +#ifndef PHALCON_RELEASE + fprintf(stderr, "WARNING: calling phalcon_memory_restore_stack() without an active memory frame!\n"); + phalcon_print_backtrace(); +#endif + return FAILURE; + } + + prev = active_memory->prev; + + if (prev != NULL) { + if (active_memory->hash_addresses != NULL) { + efree(active_memory->hash_addresses); + } + + if (likely(active_memory->addresses != NULL)) { + efree(active_memory->addresses); + } + + efree(phalcon_globals_ptr->active_memory); + phalcon_globals_ptr->active_memory = prev; + prev->next = NULL; + } else { + assert(phalcon_globals_ptr->start_memory == active_memory); + assert(active_memory->next == NULL); + active_memory->pointer = 0; + active_memory->hash_pointer = 0; + phalcon_globals_ptr->active_memory = NULL; + } + + return SUCCESS; +} + +static int PHALCON_FASTCALL phalcon_clean_restore_stack_shutdown(TSRMLS_D) { + + zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; + + while (phalcon_globals_ptr->active_memory != NULL) { + phalcon_memory_restore_stack_shutdown(TSRMLS_C); + } + + return SUCCESS; +} + static void PHALCON_FASTCALL phalcon_copy_ctor(zval *destination, zval *origin) { if (Z_REFCOUNT_P(origin) > 1) { zval_copy_ctor(destination); @@ -100747,9 +100800,9 @@ static PHP_RINIT_FUNCTION(phalcon){ static PHP_RSHUTDOWN_FUNCTION(phalcon){ - /*if (PHALCON_GLOBAL(start_memory) != NULL) { - phalcon_clean_restore_stack(TSRMLS_C); - }*/ + if (PHALCON_GLOBAL(start_memory) != NULL) { + phalcon_clean_restore_stack_shutdown(TSRMLS_C); + } if (PHALCON_GLOBAL(function_cache) != NULL) { zend_hash_destroy(PHALCON_GLOBAL(function_cache)); diff --git a/ext/kernel/memory.c b/ext/kernel/memory.c index 1b92ebe1aaa..c08c4032737 100644 --- a/ext/kernel/memory.c +++ b/ext/kernel/memory.c @@ -109,10 +109,10 @@ void PHALCON_FASTCALL phalcon_memory_grow_stack(TSRMLS_D) { zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; assert(phalcon_globals_ptr->start_memory != NULL); + if (!phalcon_globals_ptr->active_memory) { phalcon_globals_ptr->active_memory = phalcon_globals_ptr->start_memory; - } - else { + } else { phalcon_memory_entry *entry = (phalcon_memory_entry *) ecalloc(1, sizeof(phalcon_memory_entry)); /* ecalloc() will take care of these members entry->pointer = 0; @@ -289,7 +289,7 @@ void PHALCON_FASTCALL phalcon_memory_remove(zval **var TSRMLS_DC) { } /** - * Cleans the phalcon memory stack recursivery + * Cleans the phalcon memory stack recursivey */ int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D) { @@ -302,6 +302,64 @@ int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D) { return SUCCESS; } +/** + * Finishes the current memory stack by releasing allocated memory + */ +int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { + + size_t i; + phalcon_memory_entry *prev, *active_memory; + phalcon_symbol_table *active_symbol_table; + zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; + + active_memory = phalcon_globals_ptr->active_memory; + if (unlikely(active_memory == NULL)) { +#ifndef PHALCON_RELEASE + fprintf(stderr, "WARNING: calling phalcon_memory_restore_stack() without an active memory frame!\n"); + phalcon_print_backtrace(); +#endif + return FAILURE; + } + + prev = active_memory->prev; + + if (prev != NULL) { + if (active_memory->hash_addresses != NULL) { + efree(active_memory->hash_addresses); + } + + if (likely(active_memory->addresses != NULL)) { + efree(active_memory->addresses); + } + + efree(phalcon_globals_ptr->active_memory); + phalcon_globals_ptr->active_memory = prev; + prev->next = NULL; + } else { + assert(phalcon_globals_ptr->start_memory == active_memory); + assert(active_memory->next == NULL); + active_memory->pointer = 0; + active_memory->hash_pointer = 0; + phalcon_globals_ptr->active_memory = NULL; + } + + return SUCCESS; +} + +/** + * Cleans the phalcon memory stack recursivery + */ +int PHALCON_FASTCALL phalcon_clean_restore_stack_shutdown(TSRMLS_D) { + + zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; + + while (phalcon_globals_ptr->active_memory != NULL) { + phalcon_memory_restore_stack_shutdown(TSRMLS_C); + } + + return SUCCESS; +} + /** * Copies a variable only if its refcount is greater than 1 */ diff --git a/ext/kernel/memory.h b/ext/kernel/memory.h index 6d1b3bd4490..b6e04cac154 100644 --- a/ext/kernel/memory.h +++ b/ext/kernel/memory.h @@ -32,6 +32,7 @@ extern void PHALCON_FASTCALL phalcon_memory_alloc(zval **var TSRMLS_DC); extern void PHALCON_FASTCALL phalcon_memory_alloc_pnull(zval **var TSRMLS_DC); extern int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D); +extern int PHALCON_FASTCALL phalcon_clean_restore_stack_shutdown(TSRMLS_D); /* Virtual symbol tables */ extern void phalcon_create_symbol_table(TSRMLS_D); diff --git a/ext/phalcon.c b/ext/phalcon.c index 05be45cda48..eb47c083fea 100644 --- a/ext/phalcon.c +++ b/ext/phalcon.c @@ -734,9 +734,9 @@ static PHP_RINIT_FUNCTION(phalcon){ static PHP_RSHUTDOWN_FUNCTION(phalcon){ - /*if (PHALCON_GLOBAL(start_memory) != NULL) { - phalcon_clean_restore_stack(TSRMLS_C); - }*/ + if (PHALCON_GLOBAL(start_memory) != NULL) { + phalcon_clean_restore_stack_shutdown(TSRMLS_C); + } if (PHALCON_GLOBAL(function_cache) != NULL) { zend_hash_destroy(PHALCON_GLOBAL(function_cache)); From b0c7d87134b8d64b72a8e26fda8a574dc5e603b9 Mon Sep 17 00:00:00 2001 From: phalcon Date: Thu, 15 Aug 2013 14:08:13 -0500 Subject: [PATCH 4/6] Fixing segfault in Volt --- ext/kernel/memory.c | 3 +- ext/kernel/operators.c | 17 +- ext/kernel/string.c | 4 +- ext/mvc/model/query/lemon | Bin 0 -> 69866 bytes ext/mvc/model/query/parser.out | 6485 +++++++++++++++++++++++++++ ext/mvc/view/engine/volt/compiler.c | 9 +- 6 files changed, 6511 insertions(+), 7 deletions(-) create mode 100755 ext/mvc/model/query/lemon create mode 100644 ext/mvc/model/query/parser.out diff --git a/ext/kernel/memory.c b/ext/kernel/memory.c index c08c4032737..c0f2450e72c 100644 --- a/ext/kernel/memory.c +++ b/ext/kernel/memory.c @@ -307,9 +307,7 @@ int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D) { */ int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { - size_t i; phalcon_memory_entry *prev, *active_memory; - phalcon_symbol_table *active_symbol_table; zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; active_memory = phalcon_globals_ptr->active_memory; @@ -324,6 +322,7 @@ int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { prev = active_memory->prev; if (prev != NULL) { + if (active_memory->hash_addresses != NULL) { efree(active_memory->hash_addresses); } diff --git a/ext/kernel/operators.c b/ext/kernel/operators.c index 525e3102684..b92d558d51b 100644 --- a/ext/kernel/operators.c +++ b/ext/kernel/operators.c @@ -58,7 +58,22 @@ void phalcon_concat_self(zval **left, zval *right TSRMLS_DC){ if (Z_TYPE_P(right) != IS_STRING) { phalcon_make_printable_zval(right, &right_copy, &use_copy_right); if (use_copy_right) { - PHALCON_CPY_WRT_CTOR(right, (&right_copy)); + /*if (Z_REFCOUNT_P(right) > 0) { + PHALCON_CPY_WRT_CTOR(right, (&right_copy)); + } else { + ALLOC_ZVAL(d); \ + * = *v; \ + zval_copy_ctor(d); \ + Z_SET_REFCOUNT_P(d, 1); \ + Z_UNSET_ISREF_P(d); + } + if (d) { + if (Z_REFCOUNT_P(d) > 0) { + zval_ptr_dtor(&d); + } + } else { + phalcon_memory_observe(&d TSRMLS_CC); \ + } \*/ } } diff --git a/ext/kernel/string.c b/ext/kernel/string.c index 94cf9da78f2..4668403942f 100644 --- a/ext/kernel/string.c +++ b/ext/kernel/string.c @@ -46,6 +46,7 @@ #include "kernel/main.h" #include "kernel/memory.h" +#include "kernel/fcall.h" #define PH_RANDOM_ALNUM 0 #define PH_RANDOM_ALPHA 1 @@ -1211,8 +1212,7 @@ void phalcon_lcfirst(zval *return_value, zval *s) if (!Z_STRLEN_P(s)) { ZVAL_EMPTY_STRING(return_value); - } - else { + } else { ZVAL_STRINGL(return_value, Z_STRVAL_P(s), Z_STRLEN_P(s), 1); c = Z_STRVAL_P(return_value); *c = tolower((unsigned char)*c); diff --git a/ext/mvc/model/query/lemon b/ext/mvc/model/query/lemon new file mode 100755 index 0000000000000000000000000000000000000000..4d51e4751eaafa105742f8ae8c7838b5fbddf0a3 GIT binary patch literal 69866 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 Date: Thu, 15 Aug 2013 14:08:53 -0500 Subject: [PATCH 5/6] Removing PHQL parser files --- ext/mvc/model/query/lemon | Bin 69866 -> 0 bytes ext/mvc/model/query/parser.out | 6485 -------------------------------- 2 files changed, 6485 deletions(-) delete mode 100755 ext/mvc/model/query/lemon delete mode 100644 ext/mvc/model/query/parser.out diff --git a/ext/mvc/model/query/lemon b/ext/mvc/model/query/lemon deleted file mode 100755 index 4d51e4751eaafa105742f8ae8c7838b5fbddf0a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69866 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 Date: Thu, 15 Aug 2013 14:10:08 -0500 Subject: [PATCH 6/6] Regenerating builds [ci skip] --- build/32bits/phalcon.c | 32 +++++++++++++++++++++++++------- build/64bits/phalcon.c | 32 +++++++++++++++++++++++++------- build/safe/phalcon.c | 32 +++++++++++++++++++++++++------- 3 files changed, 75 insertions(+), 21 deletions(-) diff --git a/build/32bits/phalcon.c b/build/32bits/phalcon.c index d35e49f1a1b..0c6800d5c3f 100644 --- a/build/32bits/phalcon.c +++ b/build/32bits/phalcon.c @@ -2693,9 +2693,7 @@ static int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D) { static int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { - size_t i; phalcon_memory_entry *prev, *active_memory; - phalcon_symbol_table *active_symbol_table; zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; active_memory = phalcon_globals_ptr->active_memory; @@ -2710,6 +2708,7 @@ static int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { prev = active_memory->prev; if (prev != NULL) { + if (active_memory->hash_addresses != NULL) { efree(active_memory->hash_addresses); } @@ -7270,8 +7269,7 @@ static void phalcon_lcfirst(zval *return_value, zval *s) if (!Z_STRLEN_P(s)) { ZVAL_EMPTY_STRING(return_value); - } - else { + } else { ZVAL_STRINGL(return_value, Z_STRVAL_P(s), Z_STRLEN_P(s), 1); c = Z_STRVAL_P(return_value); *c = tolower((unsigned char)*c); @@ -7682,7 +7680,22 @@ static void phalcon_concat_self(zval **left, zval *right TSRMLS_DC){ if (Z_TYPE_P(right) != IS_STRING) { phalcon_make_printable_zval(right, &right_copy, &use_copy_right); if (use_copy_right) { - PHALCON_CPY_WRT_CTOR(right, (&right_copy)); + /*if (Z_REFCOUNT_P(right) > 0) { + PHALCON_CPY_WRT_CTOR(right, (&right_copy)); + } else { + ALLOC_ZVAL(d); \ + * = *v; \ + zval_copy_ctor(d); \ + Z_SET_REFCOUNT_P(d, 1); \ + Z_UNSET_ISREF_P(d); + } + if (d) { + if (Z_REFCOUNT_P(d) > 0) { + zval_ptr_dtor(&d); + } + } else { + phalcon_memory_observe(&d TSRMLS_CC); \ + } \*/ } } @@ -83227,7 +83240,9 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ PHALCON_INIT_VAR(stat); ZVAL_BOOL(stat, 1); - PHALCON_CPY_WRT(compile_always, zfalse); + + PHALCON_INIT_VAR(compile_always); + ZVAL_BOOL(compile_always, 0); PHALCON_INIT_VAR(compiled_path); ZVAL_STRING(compiled_path, "", 1); @@ -83238,6 +83253,7 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ PHALCON_INIT_VAR(compiled_extension); ZVAL_STRING(compiled_extension, ".php", 1); + PHALCON_CPY_WRT(compilation, znull); PHALCON_OBS_VAR(options); @@ -83245,7 +83261,8 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ if (Z_TYPE_P(options) == IS_ARRAY) { if (phalcon_array_isset_quick_string(options, SS("compileAlways"), 595908511UL)) { - + + PHALCON_OBS_NVAR(compile_always); phalcon_array_fetch_quick_string(&compile_always, options, SS("compileAlways"), 595908511UL, PH_NOISY); if (Z_TYPE_P(compile_always) != IS_BOOL) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_view_exception_ce, "compileAlways must be a bool value"); @@ -83255,6 +83272,7 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ if (phalcon_array_isset_quick_string(options, SS("prefix"), 3263410483UL)) { + PHALCON_OBS_NVAR(prefix); phalcon_array_fetch_quick_string(&prefix, options, SS("prefix"), 3263410483UL, PH_NOISY); if (Z_TYPE_P(prefix) != IS_STRING) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_view_exception_ce, "prefix must be a string"); diff --git a/build/64bits/phalcon.c b/build/64bits/phalcon.c index 46663dc6264..dc033c6dd67 100644 --- a/build/64bits/phalcon.c +++ b/build/64bits/phalcon.c @@ -2693,9 +2693,7 @@ static int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D) { static int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { - size_t i; phalcon_memory_entry *prev, *active_memory; - phalcon_symbol_table *active_symbol_table; zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; active_memory = phalcon_globals_ptr->active_memory; @@ -2710,6 +2708,7 @@ static int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { prev = active_memory->prev; if (prev != NULL) { + if (active_memory->hash_addresses != NULL) { efree(active_memory->hash_addresses); } @@ -7270,8 +7269,7 @@ static void phalcon_lcfirst(zval *return_value, zval *s) if (!Z_STRLEN_P(s)) { ZVAL_EMPTY_STRING(return_value); - } - else { + } else { ZVAL_STRINGL(return_value, Z_STRVAL_P(s), Z_STRLEN_P(s), 1); c = Z_STRVAL_P(return_value); *c = tolower((unsigned char)*c); @@ -7682,7 +7680,22 @@ static void phalcon_concat_self(zval **left, zval *right TSRMLS_DC){ if (Z_TYPE_P(right) != IS_STRING) { phalcon_make_printable_zval(right, &right_copy, &use_copy_right); if (use_copy_right) { - PHALCON_CPY_WRT_CTOR(right, (&right_copy)); + /*if (Z_REFCOUNT_P(right) > 0) { + PHALCON_CPY_WRT_CTOR(right, (&right_copy)); + } else { + ALLOC_ZVAL(d); \ + * = *v; \ + zval_copy_ctor(d); \ + Z_SET_REFCOUNT_P(d, 1); \ + Z_UNSET_ISREF_P(d); + } + if (d) { + if (Z_REFCOUNT_P(d) > 0) { + zval_ptr_dtor(&d); + } + } else { + phalcon_memory_observe(&d TSRMLS_CC); \ + } \*/ } } @@ -83227,7 +83240,9 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ PHALCON_INIT_VAR(stat); ZVAL_BOOL(stat, 1); - PHALCON_CPY_WRT(compile_always, zfalse); + + PHALCON_INIT_VAR(compile_always); + ZVAL_BOOL(compile_always, 0); PHALCON_INIT_VAR(compiled_path); ZVAL_STRING(compiled_path, "", 1); @@ -83238,6 +83253,7 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ PHALCON_INIT_VAR(compiled_extension); ZVAL_STRING(compiled_extension, ".php", 1); + PHALCON_CPY_WRT(compilation, znull); PHALCON_OBS_VAR(options); @@ -83245,7 +83261,8 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ if (Z_TYPE_P(options) == IS_ARRAY) { if (phalcon_array_isset_quick_string(options, SS("compileAlways"), 586367855176767391UL)) { - + + PHALCON_OBS_NVAR(compile_always); phalcon_array_fetch_quick_string(&compile_always, options, SS("compileAlways"), 586367855176767391UL, PH_NOISY); if (Z_TYPE_P(compile_always) != IS_BOOL) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_view_exception_ce, "compileAlways must be a bool value"); @@ -83255,6 +83272,7 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ if (phalcon_array_isset_quick_string(options, SS("prefix"), 229479071068467UL)) { + PHALCON_OBS_NVAR(prefix); phalcon_array_fetch_quick_string(&prefix, options, SS("prefix"), 229479071068467UL, PH_NOISY); if (Z_TYPE_P(prefix) != IS_STRING) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_view_exception_ce, "prefix must be a string"); diff --git a/build/safe/phalcon.c b/build/safe/phalcon.c index 7d885b5a3a9..93b3d9b1e96 100644 --- a/build/safe/phalcon.c +++ b/build/safe/phalcon.c @@ -2693,9 +2693,7 @@ static int PHALCON_FASTCALL phalcon_clean_restore_stack(TSRMLS_D) { static int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { - size_t i; phalcon_memory_entry *prev, *active_memory; - phalcon_symbol_table *active_symbol_table; zend_phalcon_globals *phalcon_globals_ptr = PHALCON_VGLOBAL; active_memory = phalcon_globals_ptr->active_memory; @@ -2710,6 +2708,7 @@ static int PHALCON_FASTCALL phalcon_memory_restore_stack_shutdown(TSRMLS_D) { prev = active_memory->prev; if (prev != NULL) { + if (active_memory->hash_addresses != NULL) { efree(active_memory->hash_addresses); } @@ -7270,8 +7269,7 @@ static void phalcon_lcfirst(zval *return_value, zval *s) if (!Z_STRLEN_P(s)) { ZVAL_EMPTY_STRING(return_value); - } - else { + } else { ZVAL_STRINGL(return_value, Z_STRVAL_P(s), Z_STRLEN_P(s), 1); c = Z_STRVAL_P(return_value); *c = tolower((unsigned char)*c); @@ -7682,7 +7680,22 @@ static void phalcon_concat_self(zval **left, zval *right TSRMLS_DC){ if (Z_TYPE_P(right) != IS_STRING) { phalcon_make_printable_zval(right, &right_copy, &use_copy_right); if (use_copy_right) { - PHALCON_CPY_WRT_CTOR(right, (&right_copy)); + /*if (Z_REFCOUNT_P(right) > 0) { + PHALCON_CPY_WRT_CTOR(right, (&right_copy)); + } else { + ALLOC_ZVAL(d); \ + * = *v; \ + zval_copy_ctor(d); \ + Z_SET_REFCOUNT_P(d, 1); \ + Z_UNSET_ISREF_P(d); + } + if (d) { + if (Z_REFCOUNT_P(d) > 0) { + zval_ptr_dtor(&d); + } + } else { + phalcon_memory_observe(&d TSRMLS_CC); \ + } \*/ } } @@ -83227,7 +83240,9 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ PHALCON_INIT_VAR(stat); ZVAL_BOOL(stat, 1); - PHALCON_CPY_WRT(compile_always, zfalse); + + PHALCON_INIT_VAR(compile_always); + ZVAL_BOOL(compile_always, 0); PHALCON_INIT_VAR(compiled_path); ZVAL_STRING(compiled_path, "", 1); @@ -83238,6 +83253,7 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ PHALCON_INIT_VAR(compiled_extension); ZVAL_STRING(compiled_extension, ".php", 1); + PHALCON_CPY_WRT(compilation, znull); PHALCON_OBS_VAR(options); @@ -83245,7 +83261,8 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ if (Z_TYPE_P(options) == IS_ARRAY) { if (phalcon_array_isset_string(options, SS("compileAlways"))) { - + + PHALCON_OBS_NVAR(compile_always); phalcon_array_fetch_string(&compile_always, options, SL("compileAlways"), PH_NOISY); if (Z_TYPE_P(compile_always) != IS_BOOL) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_view_exception_ce, "compileAlways must be a bool value"); @@ -83255,6 +83272,7 @@ static PHP_METHOD(Phalcon_Mvc_View_Engine_Volt_Compiler, compile){ if (phalcon_array_isset_string(options, SS("prefix"))) { + PHALCON_OBS_NVAR(prefix); phalcon_array_fetch_string(&prefix, options, SL("prefix"), PH_NOISY); if (Z_TYPE_P(prefix) != IS_STRING) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_view_exception_ce, "prefix must be a string");