[PHP-CVS] com php-src: Fix undeclared intl_locale_get_default(): ext/intl/calendar/calendar_methods.cpp ext/intl/calendar/gregoriancalendar_methods.cpp ext/intl/locale/locale.h ext/intl/locale/locale_

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:9c5074a484b7f10e65471a21a7ef50dda8391509
Author:Gustavo André dos Santos Lopes cataphr...@php.net Mon, 25 
Jun 2012 10:59:58 +0200
Parents:   ee8b9d5c6f7390a56b277b170e2e3baee5c74bf4
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=9c5074a484b7f10e65471a21a7ef50dda8391509

Log:
Fix undeclared intl_locale_get_default()

This was causing segfaults at least in the resourcebundle
constructor.

Also moved intl_locale_get_default() to a more central location
and fixed a constness warning in resourcebundle_ctor().

Changed paths:
  M  ext/intl/calendar/calendar_methods.cpp
  M  ext/intl/calendar/gregoriancalendar_methods.cpp
  M  ext/intl/locale/locale.h
  M  ext/intl/locale/locale_methods.c
  M  ext/intl/php_intl.c
  M  ext/intl/php_intl.h
  M  ext/intl/resourcebundle/resourcebundle_class.c
  M  ext/intl/timezone/timezone_methods.cpp


Diff:
diff --git a/ext/intl/calendar/calendar_methods.cpp 
b/ext/intl/calendar/calendar_methods.cpp
index 8562a2d..539b11a 100644
--- a/ext/intl/calendar/calendar_methods.cpp
+++ b/ext/intl/calendar/calendar_methods.cpp
@@ -25,12 +25,12 @@
 #include unicode/ustring.h
 #include ../intl_convertcpp.h
 extern C {
+#include ../php_intl.h
 #define USE_TIMEZONE_POINTER 1
 #include ../timezone/timezone_class.h
 #define USE_CALENDAR_POINTER 1
 #include calendar_class.h
 #include ../intl_convert.h
-#include ../locale/locale.h
 #include zend_exceptions.h
 #include zend_interfaces.h
 #include ext/date/php_date.h
diff --git a/ext/intl/calendar/gregoriancalendar_methods.cpp 
b/ext/intl/calendar/gregoriancalendar_methods.cpp
index 47e8463..3c05253 100644
--- a/ext/intl/calendar/gregoriancalendar_methods.cpp
+++ b/ext/intl/calendar/gregoriancalendar_methods.cpp
@@ -24,11 +24,11 @@
 #include unicode/calendar.h
 #include unicode/gregocal.h
 extern C {
+#include ../php_intl.h
 #define USE_TIMEZONE_POINTER 1
 #include ../timezone/timezone_class.h
 #define USE_CALENDAR_POINTER 1
 #include calendar_class.h
-#include ../locale/locale.h
 #include ext/date/php_date.h
 }
 
diff --git a/ext/intl/locale/locale.h b/ext/intl/locale/locale.h
index 0aaab4b..f3859c7 100755
--- a/ext/intl/locale/locale.h
+++ b/ext/intl/locale/locale.h
@@ -22,8 +22,6 @@
 #include php.h
 
 void locale_register_constants( INIT_FUNC_ARGS );
-
-const char *intl_locale_get_default( TSRMLS_D );
  
 #define OPTION_DEFAULT NULL
 #define LOC_LANG_TAG language
diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c
index 466dba1..936e314 100755
--- a/ext/intl/locale/locale_methods.c
+++ b/ext/intl/locale/locale_methods.c
@@ -201,14 +201,6 @@ static int getSingletonPos(char* str)
 }
 /* }}} */
 
-const char *intl_locale_get_default( TSRMLS_D )
-{
-   if( INTL_G(default_locale) == NULL ) {
-   return uloc_getDefault();
-   }
-   return INTL_G(default_locale);
-}
-
 /* {{{ proto static string Locale::getDefault(  )
Get default locale */
 /* }}} */
diff --git a/ext/intl/php_intl.c b/ext/intl/php_intl.c
index 59272db..e0d1081 100755
--- a/ext/intl/php_intl.c
+++ b/ext/intl/php_intl.c
@@ -109,6 +109,14 @@
 
 ZEND_DECLARE_MODULE_GLOBALS( intl )
 
+const char *intl_locale_get_default( TSRMLS_D )
+{
+   if( INTL_G(default_locale) == NULL ) {
+   return uloc_getDefault();
+   }
+   return INTL_G(default_locale);
+}
+
 /* {{{ Arguments info */
 ZEND_BEGIN_ARG_INFO_EX(collator_static_0_args, 0, 0, 0)
 ZEND_END_ARG_INFO()
diff --git a/ext/intl/php_intl.h b/ext/intl/php_intl.h
index c3d5c60..7a71123 100755
--- a/ext/intl/php_intl.h
+++ b/ext/intl/php_intl.h
@@ -69,6 +69,8 @@ PHP_RINIT_FUNCTION(intl);
 PHP_RSHUTDOWN_FUNCTION(intl);
 PHP_MINFO_FUNCTION(intl);
 
+const char *intl_locale_get_default( TSRMLS_D );
+
 #define PHP_INTL_VERSION 1.1.0
 
 #endif  /* PHP_INTL_H */
diff --git a/ext/intl/resourcebundle/resourcebundle_class.c 
b/ext/intl/resourcebundle/resourcebundle_class.c
index 3d7fd5f..7f1529e 100644
--- a/ext/intl/resourcebundle/resourcebundle_class.c
+++ b/ext/intl/resourcebundle/resourcebundle_class.c
@@ -78,13 +78,11 @@ static zend_object_value ResourceBundle_object_create( 
zend_class_entry *ce TSRM
 /* {{{ ResourceBundle_ctor */
 static void resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS) 
 {
-   char *bundlename;
-   int   bundlename_len = 0;
-   char *locale;
-   int   locale_len = 0;
-   zend_bool fallback = 1;
-
-   char *pbuf;
+   const char  *bundlename;
+   int bundlename_len = 0;
+   const char  *locale;
+   int locale_len = 0;
+   zend_bool   fallback = 1;
 
zval  *object = return_value;
ResourceBundle_object *rb = (ResourceBundle_object *) 
zend_object_store_get_object( object TSRMLS_CC);
@@ -116,6 +114,7 @@ static void 
resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS)
 
if (!fallback  (INTL_DATA_ERROR_CODE(rb) == U_USING_FALLBACK_WARNING 
||
 

[PHP-CVS] com php-src: Update UPGRADING given 7596445: UPGRADING

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:794d2268f20f8516f07e3189ec6c6b47b556a62d
Author:Gustavo André dos Santos Lopes cataphr...@php.net Mon, 25 
Jun 2012 12:12:22 +0200
Parents:   75964450ed12778ca06e2789124d87fc8b6f3945
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=794d2268f20f8516f07e3189ec6c6b47b556a62d

Log:
Update UPGRADING given 7596445

Changed paths:
  M  UPGRADING


Diff:
diff --git a/UPGRADING b/UPGRADING
index 3581b65..77fe972 100755
--- a/UPGRADING
+++ b/UPGRADING
@@ -188,6 +188,9 @@ PHP X.Y UPGRADE NOTES
   - IntlCalendar
   - IntlGregorianCalendar
   - IntlTimeZone
+  - IntlBreakIterator
+  - IntlRuleBasedBreakIterator
+  - IntlCodePointBreakIterator
 
 
 7. Removed Extensions


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] com php-src: Merge branch 'break_iterator': ext/intl/php_intl.c

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:75964450ed12778ca06e2789124d87fc8b6f3945
Author:Gustavo André dos Santos Lopes cataphr...@php.net Mon, 25 
Jun 2012 12:11:49 +0200
Parents:   715e59ad82862785261dcf91570583eda9fef081 
0df73a85e19d71612ab3a0ba03061123453ff2e3
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=75964450ed12778ca06e2789124d87fc8b6f3945

Log:
Merge branch 'break_iterator'

* break_iterator:
  Fix typo in error message
  BreakIterator: fix compat with old ICU versions
  Fix build error one ext/intl
  BreakIterator::getPartsIterator: new optional arg
  Added IntlCodePointBreakIterator.
  Add Intl prefix to BreakIterator/RuleBasedBI
  Remove trailing space
  Replaced zend_parse_method_params with plain zpp
  BreakIter: Removed getAvailableLocales/getHashCode
  Change in BreakIterator::getPartsIterator()
  BreakIterator: add rules status constants
  Tests for (RuleBased)BreakIterator.
  BreakIterator and RuleBasedBreakiterator added

Changed paths:
  MM  ext/intl/php_intl.c


Diff:



--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] com php-src: Fix typo in error message: ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp ext/intl/tests/breakiter___construct_error.phpt

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:0df73a85e19d71612ab3a0ba03061123453ff2e3
Author:Gustavo André dos Santos Lopes cataphr...@php.net Mon, 25 
Jun 2012 12:06:31 +0200
Parents:   d8b067e66f4b458108821df512090ede623df214
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=0df73a85e19d71612ab3a0ba03061123453ff2e3

Log:
Fix typo in error message

Changed paths:
  M  ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
  M  ext/intl/tests/breakiter___construct_error.phpt


Diff:
diff --git a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp 
b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
index 41ebfe5..f2a39ba 100644
--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
+++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
@@ -77,7 +77,7 @@ static void 
_php_intlgregcal_constructor_body(INTERNAL_FUNCTION_PARAMETERS)
rbbi = new RuleBasedBreakIterator((uint8_t*)rules, rules_len, 
status);
if (U_FAILURE(status)) {
intl_error_set(NULL, status, rbbi_create_instance: 
unable to 
-   creaete instance from compiled rules, 0 
TSRMLS_CC);
+   create instance from compiled rules, 0 
TSRMLS_CC);
RETURN_NULL();
}
 #else
diff --git a/ext/intl/tests/breakiter___construct_error.phpt 
b/ext/intl/tests/breakiter___construct_error.phpt
index 8d6a718..770f140 100644
--- a/ext/intl/tests/breakiter___construct_error.phpt
+++ b/ext/intl/tests/breakiter___construct_error.phpt
@@ -34,5 +34,5 @@ Warning: IntlRuleBasedBreakIterator::__construct() expects 
parameter 2 to be boo
 Warning: IntlRuleBasedBreakIterator::__construct(): rbbi_create_instance: bad 
arguments in %s on line %d
 NULL
 
-Warning: IntlRuleBasedBreakIterator::__construct(): rbbi_create_instance: 
unable to creaete instance from compiled rules in %s on line %d
+Warning: IntlRuleBasedBreakIterator::__construct(): rbbi_create_instance: 
unable to create instance from compiled rules in %s on line %d
 NULL


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] com php-src: Fix build error one ext/intl: ext/intl/breakiterator/codepointiterator_internal.cpp

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:5a9dca458a517f62fc596c57594a02c363c5a3c0
Author:Gustavo André dos Santos Lopes cataphr...@php.net Mon, 25 
Jun 2012 11:53:20 +0200
Parents:   77daa3482d5592181560e0e6076c1e3291620e7b
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=5a9dca458a517f62fc596c57594a02c363c5a3c0

Log:
Fix build error one ext/intl

Changed paths:
  M  ext/intl/breakiterator/codepointiterator_internal.cpp


Diff:
diff --git a/ext/intl/breakiterator/codepointiterator_internal.cpp 
b/ext/intl/breakiterator/codepointiterator_internal.cpp
index 2dfae1a..e88f2ea 100644
--- a/ext/intl/breakiterator/codepointiterator_internal.cpp
+++ b/ext/intl/breakiterator/codepointiterator_internal.cpp
@@ -16,6 +16,7 @@
 
 #include codepointiterator_internal.h
 #include unicode/uchriter.h
+#include typeinfo
 
 //copied from cmemory.h, which is not public
 typedef union {
@@ -283,4 +284,4 @@ CodePointBreakIterator 
CodePointBreakIterator::refreshInputText(UText *input, U
}
 
return *this;
-}
\ No newline at end of file
+}


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] com php-src: BreakIterator: fix compat with old ICU versions: ext/intl/breakiterator/breakiterator_class.cpp ext/intl/breakiterator/codepointiterator_internal.cpp ext/intl/breakiterator/rule

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:d8b067e66f4b458108821df512090ede623df214
Author:Gustavo André dos Santos Lopes cataphr...@php.net Mon, 25 
Jun 2012 12:03:27 +0200
Parents:   5a9dca458a517f62fc596c57594a02c363c5a3c0
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=d8b067e66f4b458108821df512090ede623df214

Log:
BreakIterator: fix compat with old ICU versions

Changed paths:
  M  ext/intl/breakiterator/breakiterator_class.cpp
  M  ext/intl/breakiterator/codepointiterator_internal.cpp
  M  ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
  M  ext/intl/tests/breakiter___construct_error.phpt
  M  ext/intl/tests/rbbiter_getBinaryRules_basic.phpt


Diff:
diff --git a/ext/intl/breakiterator/breakiterator_class.cpp 
b/ext/intl/breakiterator/breakiterator_class.cpp
index d193fc4..de4bfbb 100644
--- a/ext/intl/breakiterator/breakiterator_class.cpp
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
@@ -312,7 +312,9 @@ static const zend_function_entry 
RuleBasedBreakIterator_class_functions[] = {
PHP_ME_MAPPING(getRules,rbbi_get_rules, 
ainfo_biter_void,   
ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(getRuleStatus,   rbbi_get_rule_status,   
ainfo_biter_void,   
ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(getRuleStatusVec,
rbbi_get_rule_status_vec,   ainfo_biter_void,   
ZEND_ACC_PUBLIC)
+#if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM = 48
PHP_ME_MAPPING(getBinaryRules,  rbbi_get_binary_rules,  
ainfo_biter_void,   
ZEND_ACC_PUBLIC)
+#endif
PHP_FE_END
 };
 /* }}} */
@@ -329,7 +331,7 @@ static const zend_function_entry 
CodePointBreakIterator_class_functions[] = {
 /* {{{ breakiterator_register_BreakIterator_class
  * Initialize 'BreakIterator' class
  */
-void breakiterator_register_BreakIterator_class(TSRMLS_D)
+U_CFUNC void breakiterator_register_BreakIterator_class(TSRMLS_D)
 {
zend_class_entry ce;
 
diff --git a/ext/intl/breakiterator/codepointiterator_internal.cpp 
b/ext/intl/breakiterator/codepointiterator_internal.cpp
index e88f2ea..bf9239d 100644
--- a/ext/intl/breakiterator/codepointiterator_internal.cpp
+++ b/ext/intl/breakiterator/codepointiterator_internal.cpp
@@ -212,6 +212,10 @@ int32_t CodePointBreakIterator::next(int32_t n)
 {
UBool res = utext_moveIndex32(this-fText, n);
 
+#ifndef UTEXT_CURRENT32
+#define UTEXT_CURRENT32 utext_current32
+#endif
+
if (res) {
this-lastCodePoint = UTEXT_CURRENT32(this-fText);
return (int32_t)UTEXT_GETNATIVEINDEX(this-fText);
diff --git a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp 
b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
index 288179a..41ebfe5 100644
--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
+++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
@@ -73,12 +73,18 @@ static void 
_php_intlgregcal_constructor_body(INTERNAL_FUNCTION_PARAMETERS)
RETURN_NULL();
}
} else { // compiled
+#if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM = 48
rbbi = new RuleBasedBreakIterator((uint8_t*)rules, rules_len, 
status);
if (U_FAILURE(status)) {
intl_error_set(NULL, status, rbbi_create_instance: 
unable to 
creaete instance from compiled rules, 0 
TSRMLS_CC);
RETURN_NULL();
}
+#else
+   intl_error_set(NULL, U_UNSUPPORTED_ERROR, 
rbbi_create_instance: 
+   compiled rules require ICU = 4.8, 0 TSRMLS_CC);
+   RETURN_NULL();
+#endif
}
 
breakiterator_object_create(return_value, rbbi TSRMLS_CC);
@@ -180,6 +186,7 @@ U_CFUNC PHP_FUNCTION(rbbi_get_rule_status_vec)
delete[] rules;
 }
 
+#if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM = 48
 U_CFUNC PHP_FUNCTION(rbbi_get_binary_rules)
 {
BREAKITER_METHOD_INIT_VARS;
@@ -209,3 +216,4 @@ U_CFUNC PHP_FUNCTION(rbbi_get_binary_rules)
 
RETURN_STRINGL(ret_rules, rules_len, 0);
 }
+#endif
diff --git a/ext/intl/tests/breakiter___construct_error.phpt 
b/ext/intl/tests/breakiter___construct_error.phpt
index e96086d..8d6a718 100644
--- a/ext/intl/tests/breakiter___construct_error.phpt
+++ b/ext/intl/tests/breakiter___construct_error.phpt
@@ -1,5 +1,8 @@
 --TEST--
 IntlRuleBasedBreakIterator::__construct(): arg errors
+--SKIPIF--
+?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?
+?php if(version_compare(INTL_ICU_VERSION, '4.8')  0) print 'skip ICU = 4.8 
only'; ?
 --FILE--
 ?php
 ini_set(intl.error_level, E_WARNING);
diff --git 

[PHP-CVS] com php-src: BreakIterator::getPartsIterator: new optional arg: ext/intl/breakiterator/breakiterator_class.cpp ext/intl/breakiterator/breakiterator_iterators.cpp ext/intl/breakiterator/break

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:77daa3482d5592181560e0e6076c1e3291620e7b
Author:Gustavo André dos Santos Lopes cataphr...@php.net Fri, 22 
Jun 2012 18:28:19 +0200
Parents:   0a7ae87e91368fe17c52767cfb31dabf3a94e38f
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=77daa3482d5592181560e0e6076c1e3291620e7b

Log:
BreakIterator::getPartsIterator: new optional arg

Can take one of:
* IntlPartsIterator::KEY_SEQUENTIAL (keys are 0, 1, ...)
* IntlPartsIterator::KEY_LEFT (keys are left boundaries)
* IntlPartsIterator::KEY_LEFT (keys are right boundaries)

The default is IntlPartsIterator::KEY_SEQUENTIAL (the previous behavior).

Changed paths:
  M  ext/intl/breakiterator/breakiterator_class.cpp
  M  ext/intl/breakiterator/breakiterator_iterators.cpp
  M  ext/intl/breakiterator/breakiterator_iterators.h
  M  ext/intl/breakiterator/breakiterator_methods.cpp
  A  ext/intl/tests/breakiter_getPartsIterator_error.phpt
  A  ext/intl/tests/breakiter_getPartsIterator_var1.phpt

diff --git a/ext/intl/breakiterator/breakiterator_class.cpp 
b/ext/intl/breakiterator/breakiterator_class.cpp
index 6335502..d193fc4 100644
--- a/ext/intl/breakiterator/breakiterator_class.cpp
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
@@ -264,6 +264,10 @@ ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_get_locale, 0, 0, 1)
ZEND_ARG_INFO(0, locale_type)
 ZEND_END_ARG_INFO()
 
+ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_getPartsIterator, 0, 0, 0)
+   ZEND_ARG_INFO(0, key_type)
+ZEND_END_ARG_INFO()
+
 ZEND_BEGIN_ARG_INFO_EX(ainfo_rbbi___construct, 0, 0, 1)
ZEND_ARG_INFO(0, rules)
ZEND_ARG_INFO(0, areCompiled)
@@ -293,7 +297,7 @@ static const zend_function_entry 
BreakIterator_class_functions[] = {
PHP_ME_MAPPING(preceding,   
breakiter_preceding,ainfo_biter_offset, 
ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(isBoundary,  
breakiter_is_boundary,  ainfo_biter_offset, 
ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(getLocale,   
breakiter_get_locale,   ainfo_biter_void,   
ZEND_ACC_PUBLIC)
-   PHP_ME_MAPPING(getPartsIterator,
breakiter_get_parts_iterator,   ainfo_biter_void,   
ZEND_ACC_PUBLIC)
+   PHP_ME_MAPPING(getPartsIterator,
breakiter_get_parts_iterator,   ainfo_biter_getPartsIterator,   
ZEND_ACC_PUBLIC)
 
PHP_ME_MAPPING(getErrorCode,
breakiter_get_error_code,   ainfo_biter_void,   
ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(getErrorMessage, 
breakiter_get_error_message,ainfo_biter_void,   
ZEND_ACC_PUBLIC)
diff --git a/ext/intl/breakiterator/breakiterator_iterators.cpp 
b/ext/intl/breakiterator/breakiterator_iterators.cpp
index d3ad050..d88ad8a 100644
--- a/ext/intl/breakiterator/breakiterator_iterators.cpp
+++ b/ext/intl/breakiterator/breakiterator_iterators.cpp
@@ -130,6 +130,7 @@ U_CFUNC zend_object_iterator *_breakiterator_get_iterator(
 
 typedef struct zoi_break_iter_parts {
zoi_with_current zoi_cur;
+   parts_iter_key_type key_type;
BreakIterator_object *bio; /* so we don't have to fetch it all the time 
*/
 } zoi_break_iter_parts;
 
@@ -138,6 +139,16 @@ static void 
_breakiterator_parts_destroy_it(zend_object_iterator *iter TSRMLS_DC
zval_ptr_dtor(reinterpret_castzval**(iter-data));
 }
 
+static int _breakiterator_parts_get_current_key(zend_object_iterator *iter,
+   
  char **str_key,
+   
  uint *str_key_len,
+   
  ulong *int_key TSRMLS_DC)
+{
+   /* the actual work is done in move_forward and rewind */
+   *int_key = iter-index;
+   return HASH_KEY_IS_LONG;
+}
+
 static void _breakiterator_parts_move_forward(zend_object_iterator *iter 
TSRMLS_DC)
 {
zoi_break_iter_parts *zoi_bit = (zoi_break_iter_parts*)iter;
@@ -157,6 +168,14 @@ static void 
_breakiterator_parts_move_forward(zend_object_iterator *iter TSRMLS_
return;
}
 
+   if (zoi_bit-key_type == PARTS_ITERATOR_KEY_LEFT) {
+   iter-index = cur;
+   } else if (zoi_bit-key_type == PARTS_ITERATOR_KEY_RIGHT) {
+   iter-index = next;
+   }
+   /* else zoi_bit-key_type == PARTS_ITERATOR_KEY_SEQUENTIAL
+* No need to do anything, the engine increments -index */
+
const char  *s = Z_STRVAL_P(bio-text);
int32_t slen = 

[PHP-CVS] com php-src: Added IntlCodePointBreakIterator.: ext/intl/breakiterator/breakiterator_class.cpp ext/intl/breakiterator/breakiterator_methods.cpp ext/intl/breakiterator/breakiterator_methods.h

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:0a7ae87e91368fe17c52767cfb31dabf3a94e38f
Author:Gustavo André dos Santos Lopes cataphr...@php.net Fri, 22 
Jun 2012 18:19:54 +0200
Parents:   cee31091a960014ce5315008fc64437d04174caf
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=0a7ae87e91368fe17c52767cfb31dabf3a94e38f

Log:
Added IntlCodePointBreakIterator.

Objects of this class can be instantiated with

IntlBreakIterator::createCodePointInstance()

The method does not take a locale, as it would not make sense in this
context.

This class has one additional method:

long IntlCodePointIterator::getLastCodePoint()

which returns either -1 or the last code point we moved over, if any
(and discounting any movement before the last call to
IntlBreakIterator::first() or IntlBreakIterator::last()).

Changed paths:
  M  ext/intl/breakiterator/breakiterator_class.cpp
  M  ext/intl/breakiterator/breakiterator_methods.cpp
  M  ext/intl/breakiterator/breakiterator_methods.h
  A  ext/intl/breakiterator/codepointiterator_internal.cpp
  A  ext/intl/breakiterator/codepointiterator_internal.h
  A  ext/intl/breakiterator/codepointiterator_methods.cpp
  A  ext/intl/breakiterator/codepointiterator_methods.h
  M  ext/intl/config.m4
  M  ext/intl/config.w32
  A  ext/intl/tests/breakiter_createCodePointInstance_basic.phpt
  A  ext/intl/tests/breakiter_createCodePointInstance_error.phpt
  A  ext/intl/tests/cpbi_clone_equality.phpt
  A  ext/intl/tests/cpbi_getLastCodePoint_basic.phpt
  A  ext/intl/tests/cpbi_getLastCodePoint_error.phpt
  A  ext/intl/tests/cpbi_parts_iterator.phpt

diff --git a/ext/intl/breakiterator/breakiterator_class.cpp 
b/ext/intl/breakiterator/breakiterator_class.cpp
index 8c25314..6335502 100644
--- a/ext/intl/breakiterator/breakiterator_class.cpp
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
@@ -20,6 +20,7 @@
 
 #include unicode/brkiter.h
 #include unicode/rbbi.h
+#include codepointiterator_internal.h
 
 #include breakiterator_iterators.h
 
@@ -30,14 +31,18 @@ extern C {
 #include breakiterator_class.h
 #include breakiterator_methods.h
 #include rulebasedbreakiterator_methods.h
+#include codepointiterator_methods.h
 #include zend_exceptions.h
 #include zend_interfaces.h
 #include assert.h
 }
 
+using PHP::CodePointBreakIterator;
+
 /* {{{ Global variables */
 zend_class_entry *BreakIterator_ce_ptr;
 zend_class_entry *RuleBasedBreakIterator_ce_ptr;
+zend_class_entry *CodePointBreakIterator_ce_ptr;
 zend_object_handlers BreakIterator_handlers;
 /* }}} */
 
@@ -49,6 +54,8 @@ U_CFUNC   void breakiterator_object_create(zval *object,
 
if (classId == RuleBasedBreakIterator::getStaticClassID()) {
ce = RuleBasedBreakIterator_ce_ptr;
+   } else if (classId == CodePointBreakIterator::getStaticClassID()) {
+   ce = CodePointBreakIterator_ce_ptr;
} else {
ce = BreakIterator_ce_ptr;
}
@@ -274,6 +281,7 @@ static const zend_function_entry 
BreakIterator_class_functions[] = {
PHP_ME_MAPPING(createCharacterInstance, 
breakiter_create_character_instance,ainfo_biter_locale, 
ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(createSentenceInstance,  
breakiter_create_sentence_instance, ainfo_biter_locale, 
ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(createTitleInstance, 
breakiter_create_title_instance,ainfo_biter_locale, 
ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
+   PHP_ME_MAPPING(createCodePointInstance, 
breakiter_create_code_point_instance,   ainfo_biter_void,   
ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(getText, 
breakiter_get_text, 
ainfo_biter_void,   ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(setText, 
breakiter_set_text, 
ainfo_biter_setText,ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(first,   
breakiter_first,
ainfo_biter_void,   ZEND_ACC_PUBLIC)
@@ -305,6 +313,14 @@ static const zend_function_entry 
RuleBasedBreakIterator_class_functions[] = {
 };
 /* }}} */
 
+/* {{{ CodePointBreakIterator_class_functions
+ */
+static const zend_function_entry CodePointBreakIterator_class_functions[] = {
+   PHP_ME_MAPPING(getLastCodePoint,
cpbi_get_last_code_point,   ainfo_biter_void,   
ZEND_ACC_PUBLIC)
+   PHP_FE_END
+};
+/* }}} */
+
 
 /* {{{ breakiterator_register_BreakIterator_class
  * Initialize 'BreakIterator' class
@@ -364,6 +380,12 @@ void breakiterator_register_BreakIterator_class(TSRMLS_D)
   

[PHP-CVS] com php-src: Replaced zend_parse_method_params with plain zpp: ext/intl/breakiterator/breakiterator_methods.cpp ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:a4925fae9b89dcd7912dce5852b4170a978e1bd0
Author:Gustavo André dos Santos Lopes cataphr...@php.net Sun, 10 
Jun 2012 00:23:09 +0200
Parents:   afed66bb9efc0a8838f2061c4a3aa0befec0f98c
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=a4925fae9b89dcd7912dce5852b4170a978e1bd0

Log:
Replaced zend_parse_method_params with plain zpp

Changed paths:
  M  ext/intl/breakiterator/breakiterator_methods.cpp
  M  ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp


Diff:
diff --git a/ext/intl/breakiterator/breakiterator_methods.cpp 
b/ext/intl/breakiterator/breakiterator_methods.cpp
index 2855105..6777f90 100644
--- a/ext/intl/breakiterator/breakiterator_methods.cpp
+++ b/ext/intl/breakiterator/breakiterator_methods.cpp
@@ -110,9 +110,9 @@ U_CFUNC PHP_FUNCTION(breakiter_create_title_instance)
 U_CFUNC PHP_FUNCTION(breakiter_get_text)
 {
BREAKITER_METHOD_INIT_VARS;
+   object = getThis();
 
-   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), 
O,
-   object, BreakIterator_ce_ptr) == FAILURE) {
+   if (zend_parse_parameters_none() == FAILURE) {
intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
breakiter_get_text: bad arguments, 0 TSRMLS_CC);
RETURN_FALSE;
@@ -134,9 +134,10 @@ U_CFUNC PHP_FUNCTION(breakiter_set_text)
UText   *ut = NULL;
zval**textzv;
BREAKITER_METHOD_INIT_VARS;
+   object = getThis();

-   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), 
Os,
-   object, BreakIterator_ce_ptr, text, text_len) == 
FAILURE) {
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, s,
+   text, text_len) == FAILURE) {
intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
breakiter_set_text: bad arguments, 0 TSRMLS_CC);
RETURN_FALSE;
@@ -178,9 +179,9 @@ static void _breakiter_no_args_ret_int32(
 {
char*msg;
BREAKITER_METHOD_INIT_VARS;
+   object = getThis();

-   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), 
O,
-   object, BreakIterator_ce_ptr) == FAILURE) {
+   if (zend_parse_parameters_none() == FAILURE) {
spprintf(msg, NULL, %s: bad arguments, func_name);
intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR, msg, 1 
TSRMLS_CC);
efree(msg);
@@ -202,9 +203,9 @@ static void _breakiter_int32_ret_int32(
char*msg;
longarg;
BREAKITER_METHOD_INIT_VARS;
+   object = getThis();

-   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), 
Ol,
-   object, BreakIterator_ce_ptr, arg) == FAILURE) {
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, l, arg) == 
FAILURE) {
spprintf(msg, NULL, %s: bad arguments, func_name);
intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR, msg, 1 
TSRMLS_CC);
efree(msg);
@@ -279,9 +280,9 @@ U_CFUNC PHP_FUNCTION(breakiter_next)
 U_CFUNC PHP_FUNCTION(breakiter_current)
 {
BREAKITER_METHOD_INIT_VARS;
+   object = getThis();

-   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), 
O,
-   object, BreakIterator_ce_ptr) == FAILURE) {
+   if (zend_parse_parameters_none() == FAILURE) {
intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
breakiter_current: bad arguments, 0 
TSRMLS_CC);
RETURN_FALSE;
@@ -312,9 +313,10 @@ U_CFUNC PHP_FUNCTION(breakiter_is_boundary)
 {
long offset;
BREAKITER_METHOD_INIT_VARS;
+   object = getThis();

-   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), 
Ol,
-   object, BreakIterator_ce_ptr, offset) == FAILURE) {
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, l,
+   offset) == FAILURE) {
intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
breakiter_is_boundary: bad arguments, 0 
TSRMLS_CC);
RETURN_FALSE;
@@ -338,9 +340,9 @@ U_CFUNC PHP_FUNCTION(breakiter_get_locale)
 {
longlocale_type;
BREAKITER_METHOD_INIT_VARS;
+   object = getThis();
 
-   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(),
-   Ol, object, BreakIterator_ce_ptr, locale_type) == 
FAILURE) {
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, l, locale_type) 
== FAILURE) {
intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
breakiter_get_locale: bad arguments, 0 TSRMLS_CC);
RETURN_FALSE;
@@ -365,9 +367,9 @@ U_CFUNC PHP_FUNCTION(breakiter_get_locale)
 U_CFUNC PHP_FUNCTION(breakiter_get_parts_iterator)
 {

[PHP-CVS] com php-src: BreakIter: Removed getAvailableLocales/getHashCode: ext/intl/breakiterator/breakiterator_class.cpp ext/intl/breakiterator/breakiterator_methods.cpp ext/intl/breakiterator/breaki

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:afed66bb9efc0a8838f2061c4a3aa0befec0f98c
Author:Gustavo André dos Santos Lopes cataphr...@php.net Sat, 9 
Jun 2012 23:59:26 +0200
Parents:   4ec75539dba8cefef16e56f02c62755a9aa9c60b
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=afed66bb9efc0a8838f2061c4a3aa0befec0f98c

Log:
BreakIter: Removed getAvailableLocales/getHashCode

Changed paths:
  M  ext/intl/breakiterator/breakiterator_class.cpp
  M  ext/intl/breakiterator/breakiterator_methods.cpp
  M  ext/intl/breakiterator/breakiterator_methods.h
  M  ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
  M  ext/intl/breakiterator/rulebasedbreakiterator_methods.h
  D  ext/intl/tests/breakiter_getAvailableLocales_basic.phpt
  D  ext/intl/tests/breakiter_getAvailableLocales_error.phpt
  D  ext/intl/tests/rbbiter_hashCode_basic.phpt


Diff:
diff --git a/ext/intl/breakiterator/breakiterator_class.cpp 
b/ext/intl/breakiterator/breakiterator_class.cpp
index f273a2f..f9ea794 100644
--- a/ext/intl/breakiterator/breakiterator_class.cpp
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
@@ -274,7 +274,6 @@ static const zend_function_entry 
BreakIterator_class_functions[] = {
PHP_ME_MAPPING(createCharacterInstance, 
breakiter_create_character_instance,ainfo_biter_locale, 
ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(createSentenceInstance,  
breakiter_create_sentence_instance, ainfo_biter_locale, 
ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(createTitleInstance, 
breakiter_create_title_instance,ainfo_biter_locale, 
ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
-   PHP_ME_MAPPING(getAvailableLocales, 
breakiter_get_available_locales,ainfo_biter_void,   
ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(getText, 
breakiter_get_text, 
ainfo_biter_void,   ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(setText, 
breakiter_set_text, 
ainfo_biter_setText,ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(first,   
breakiter_first,
ainfo_biter_void,   ZEND_ACC_PUBLIC)
@@ -298,7 +297,6 @@ static const zend_function_entry 
BreakIterator_class_functions[] = {
  */
 static const zend_function_entry RuleBasedBreakIterator_class_functions[] = {
PHP_ME(RuleBasedBreakIterator,  __construct,
ainfo_rbbi___construct, 
ZEND_ACC_PUBLIC)
-   PHP_ME_MAPPING(hashCode,rbbi_hash_code, 
ainfo_biter_void,   
ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(getRules,rbbi_get_rules, 
ainfo_biter_void,   
ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(getRuleStatus,   rbbi_get_rule_status,   
ainfo_biter_void,   
ZEND_ACC_PUBLIC)
PHP_ME_MAPPING(getRuleStatusVec,
rbbi_get_rule_status_vec,   ainfo_biter_void,   
ZEND_ACC_PUBLIC)
diff --git a/ext/intl/breakiterator/breakiterator_methods.cpp 
b/ext/intl/breakiterator/breakiterator_methods.cpp
index 4aca6ef..2855105 100644
--- a/ext/intl/breakiterator/breakiterator_methods.cpp
+++ b/ext/intl/breakiterator/breakiterator_methods.cpp
@@ -107,27 +107,6 @@ U_CFUNC PHP_FUNCTION(breakiter_create_title_instance)
INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }
 
-U_CFUNC PHP_FUNCTION(breakiter_get_available_locales)
-{
-   intl_error_reset(NULL TSRMLS_CC);
-   
-   if (zend_parse_parameters_none() == FAILURE) {
-   intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
-   breakiter_get_available_locales: bad 
arguments, 0 TSRMLS_CC);
-   RETURN_FALSE;
-   }
-   
-   const   Locale *locales;
-   int32_t count;
-   
-   locales = BreakIterator::getAvailableLocales(count);
-   array_init_size(return_value, (uint)count);
-   for (int i = 0; i  count; i++) {
-   Locale locale = locales[i];
-   add_next_index_string(return_value, locale.getName(), 1);
-   }
-}
-
 U_CFUNC PHP_FUNCTION(breakiter_get_text)
 {
BREAKITER_METHOD_INIT_VARS;
diff --git a/ext/intl/breakiterator/breakiterator_methods.h 

[PHP-CVS] com php-src: Change in BreakIterator::getPartsIterator(): ext/intl/breakiterator/breakiterator_iterators.cpp ext/intl/breakiterator/breakiterator_iterators.h ext/intl/common/common_enum.cpp

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:4ec75539dba8cefef16e56f02c62755a9aa9c60b
Author:Gustavo André dos Santos Lopes cataphr...@php.net Thu, 7 
Jun 2012 15:20:00 +0200
Parents:   c6593a0e9b3ea1a6045f8a52a1b9d8bce4d63773
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=4ec75539dba8cefef16e56f02c62755a9aa9c60b

Log:
Change in BreakIterator::getPartsIterator()

BreakIterator::getPartsIterator() now returns an IntlIterator subclass
with a special method, getBreakIterator(), that returns the
associated BreakIterator.

Any call to getRuleStatus() is forwarded to the BreakIterator.

Changed paths:
  M  ext/intl/breakiterator/breakiterator_iterators.cpp
  M  ext/intl/breakiterator/breakiterator_iterators.h
  M  ext/intl/common/common_enum.cpp
  M  ext/intl/common/common_enum.h
  M  ext/intl/php_intl.c
  M  ext/intl/tests/breakiter_getPartsIterator_basic.phpt


Diff:
diff --git a/ext/intl/breakiterator/breakiterator_iterators.cpp 
b/ext/intl/breakiterator/breakiterator_iterators.cpp
index 4a0cf1d..66f4292 100644
--- a/ext/intl/breakiterator/breakiterator_iterators.cpp
+++ b/ext/intl/breakiterator/breakiterator_iterators.cpp
@@ -18,7 +18,10 @@
 #include config.h
 #endif
 
+#include unicode/brkiter.h
+
 #include breakiterator_iterators.h
+#include ../common/common_enum.h
 
 extern C {
 #define USE_BREAKITERATOR_POINTER
@@ -28,6 +31,9 @@ extern C {
 #include zend_exceptions.h
 }
 
+static zend_class_entry *IntlPartsIterator_ce_ptr;
+static zend_object_handlers IntlPartsIterator_handlers;
+
 /* BreakIterator's iterator */
 
 inline BreakIterator *_breakiter_prolog(zend_object_iterator *iter TSRMLS_DC)
@@ -201,7 +207,7 @@ void IntlIterator_from_BreakIterator_parts(zval 
*break_iter_zv,
 
zval_add_ref(break_iter_zv);
 
-   object_init_ex(object, IntlIterator_ce_ptr);
+   object_init_ex(object, IntlPartsIterator_ce_ptr);
ii = (IntlIterator_object*)zend_object_store_get_object(object 
TSRMLS_CC);
 
ii-iterator = 
(zend_object_iterator*)emalloc(sizeof(zoi_break_iter_parts));
@@ -216,3 +222,94 @@ void IntlIterator_from_BreakIterator_parts(zval 
*break_iter_zv,
zend_object_store_get_object(break_iter_zv TSRMLS_CC);
assert(((zoi_break_iter_parts*)ii-iterator)-bio-biter != NULL);
 }
+
+U_CFUNC zend_object_value IntlPartsIterator_object_create(zend_class_entry *ce 
TSRMLS_DC)
+{
+   zend_object_value   retval;
+   
+   retval = IntlIterator_ce_ptr-create_object(ce TSRMLS_CC);
+   retval.handlers = IntlPartsIterator_handlers;
+   
+   return retval;
+}
+
+U_CFUNC zend_function *IntlPartsIterator_get_method(zval **object_ptr,
+   char *method, int method_len, const zend_literal *key TSRMLS_DC)
+{
+   zend_literal local_literal = {0};
+   zend_function *ret;
+   ALLOCA_FLAG(use_heap)
+
+   if (key == NULL) {
+   Z_STRVAL(local_literal.constant) = static_castchar*(
+   do_alloca(method_len + 1, use_heap));
+   zend_str_tolower_copy(Z_STRVAL(local_literal.constant),
+   method, method_len);
+   local_literal.hash_value = zend_hash_func(
+   Z_STRVAL(local_literal.constant), method_len + 
1);
+   key = local_literal;
+   }
+
+   if ((key-hash_value  0x) == 0xA2B486A1 /* hash of 
getrulestatus\0 */
+method_len == sizeof(getrulestatus) - 1
+memcmp(getrulestatus, Z_STRVAL(key-constant), 
method_len) == 0) {
+   IntlIterator_object *obj = (IntlIterator_object*)
+   zend_object_store_get_object(*object_ptr 
TSRMLS_CC);
+   if (obj-iterator  obj-iterator-data) {
+   zval *break_iter_zv = 
static_castzval*(obj-iterator-data);
+   *object_ptr = break_iter_zv;
+   ret = Z_OBJ_HANDLER_P(break_iter_zv, 
get_method)(object_ptr,
+   method, method_len, key TSRMLS_CC);
+   goto end;
+   }
+   }
+   
+   ret = std_object_handlers.get_method(object_ptr,
+   method, method_len, key TSRMLS_CC);
+
+end:
+   if (key == local_literal) {
+   free_alloca(Z_STRVAL(local_literal.constant), use_heap);
+   }
+
+   return ret;
+}
+
+U_CFUNC PHP_METHOD(IntlPartsIterator, getBreakIterator)
+{
+   INTLITERATOR_METHOD_INIT_VARS;
+
+   if (zend_parse_parameters_none() == FAILURE) {
+   intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
+   IntlPartsIterator::getBreakIterator: bad arguments, 0 
TSRMLS_CC);
+   return;
+   }
+
+   INTLITERATOR_METHOD_FETCH_OBJECT;
+   
+   zval *biter_zval = static_castzval*(ii-iterator-data);
+   RETURN_ZVAL(biter_zval, 1, 0);
+}
+
+ZEND_BEGIN_ARG_INFO_EX(ainfo_parts_it_void, 0, 0, 0)
+ZEND_END_ARG_INFO()

[PHP-CVS] com php-src: BreakIterator: add rules status constants: ext/intl/breakiterator/breakiterator_class.cpp

2012-06-25 Thread Gustavo André dos Santos Lopes
Commit:c6593a0e9b3ea1a6045f8a52a1b9d8bce4d63773
Author:Gustavo André dos Santos Lopes cataphr...@php.net Mon, 4 
Jun 2012 23:09:10 +0200
Parents:   036b1eb2912872ade10e35f26daf10c65cc3cdea
Branches:  master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=c6593a0e9b3ea1a6045f8a52a1b9d8bce4d63773

Log:
BreakIterator: add rules status constants

Changed paths:
  M  ext/intl/breakiterator/breakiterator_class.cpp


Diff:
diff --git a/ext/intl/breakiterator/breakiterator_class.cpp 
b/ext/intl/breakiterator/breakiterator_class.cpp
index 47e5fb5..f273a2f 100644
--- a/ext/intl/breakiterator/breakiterator_class.cpp
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
@@ -333,6 +333,35 @@ void breakiterator_register_BreakIterator_class(TSRMLS_D)
zend_declare_class_constant_long(BreakIterator_ce_ptr,
DONE, sizeof(DONE) - 1, BreakIterator::DONE TSRMLS_CC );
 
+   /* Declare constants that are defined in the C header */
+#define BREAKITER_DECL_LONG_CONST(name) \
+   zend_declare_class_constant_long(BreakIterator_ce_ptr, #name, \
+   sizeof(#name) - 1, UBRK_ ## name TSRMLS_CC)
+
+   BREAKITER_DECL_LONG_CONST(WORD_NONE);
+   BREAKITER_DECL_LONG_CONST(WORD_NONE_LIMIT);
+   BREAKITER_DECL_LONG_CONST(WORD_NUMBER);
+   BREAKITER_DECL_LONG_CONST(WORD_NUMBER_LIMIT);
+   BREAKITER_DECL_LONG_CONST(WORD_LETTER);
+   BREAKITER_DECL_LONG_CONST(WORD_LETTER_LIMIT);
+   BREAKITER_DECL_LONG_CONST(WORD_KANA);
+   BREAKITER_DECL_LONG_CONST(WORD_KANA_LIMIT);
+   BREAKITER_DECL_LONG_CONST(WORD_IDEO);
+   BREAKITER_DECL_LONG_CONST(WORD_IDEO_LIMIT);
+
+   BREAKITER_DECL_LONG_CONST(LINE_SOFT);
+   BREAKITER_DECL_LONG_CONST(LINE_SOFT_LIMIT);
+   BREAKITER_DECL_LONG_CONST(LINE_HARD);
+   BREAKITER_DECL_LONG_CONST(LINE_HARD_LIMIT);
+
+   BREAKITER_DECL_LONG_CONST(SENTENCE_TERM);
+   BREAKITER_DECL_LONG_CONST(SENTENCE_TERM_LIMIT);
+   BREAKITER_DECL_LONG_CONST(SENTENCE_SEP);
+   BREAKITER_DECL_LONG_CONST(SENTENCE_SEP_LIMIT);
+
+#undef BREAKITER_DECL_LONG_CONST
+
+
/* Create and register 'RuleBasedBreakIterator' class. */
INIT_CLASS_ENTRY(ce, RuleBasedBreakIterator,
RuleBasedBreakIterator_class_functions);


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] com php-src: Fix bug #62373 (serialize() generates wrong reference to the object): ext/standard/tests/serialize/bug62373.phpt ext/standard/var.c

2012-06-25 Thread Moriyoshi Koizumi
Commit:e42718227945202044516c71f0098fe464987410
Author:Moriyoshi Koizumi m...@mozo.jp Mon, 25 Jun 2012 19:13:23 
+0900
Parents:   5b3f4d25ea047f14d6485fb6f456cece384d33ee
Branches:  PHP-5.3

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=e42718227945202044516c71f0098fe464987410

Log:
Fix bug #62373 (serialize() generates wrong reference to the object)

Bugs:
https://bugs.php.net/62373

Changed paths:
  A  ext/standard/tests/serialize/bug62373.phpt
  M  ext/standard/var.c


Diff:
diff --git a/ext/standard/tests/serialize/bug62373.phpt 
b/ext/standard/tests/serialize/bug62373.phpt
new file mode 100644
index 000..666c33e
--- /dev/null
+++ b/ext/standard/tests/serialize/bug62373.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #62373 (serialize() generates wrong reference to the object)
+--FILE--
+?php
+class A {}
+class B {}
+
+$size_of_ce = (((int)(log(PHP_INT_MAX) / log(2)) + 1 == 32 ? 368: 680) + 15)  
~15;
+$dummy = array();
+$b = new B();
+$period = $size_of_ce  5;
+for ($i = 0; $i  $period * 3; $i++) {
+$a = new A();
+$s = unserialize(serialize(array($b, $a)));
+if ($s[0] === $s[1]) {
+echo OOPS\n;
+break; 
+}
+$dummy[] = $a;
+}
+
+echo OK\n;
+?
+--EXPECT--
+OK
diff --git a/ext/standard/var.c b/ext/standard/var.c
index ddcfde0..3e2a45c 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -544,12 +544,9 @@ static inline int php_add_var_hash(HashTable *var_hash, 
zval *var, void *var_old
 
/* relies on (long) being a perfect hash function for data pointers,
 * however the actual identity of an object has had to be determined
-* by its object handle and the class entry since 5.0. */
+* by its object handle since 5.0. */
if ((Z_TYPE_P(var) == IS_OBJECT)  Z_OBJ_HT_P(var)-get_class_entry) {
-   p = smart_str_print_long(id + sizeof(id) - 1,
-   (((size_t)Z_OBJCE_P(var)  5)
-   | ((size_t)Z_OBJCE_P(var)  (sizeof(long) * 8 
- 5)))
-   + (long) Z_OBJ_HANDLE_P(var));
+   p = smart_str_print_long(id + sizeof(id) - 1, (long) 
Z_OBJ_HANDLE_P(var));
*(--p) = 'O';
len = id + sizeof(id) - 1 - p;
} else {


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] com php-src: Fix bug #62373 (serialize() generates wrong reference to the object): ext/standard/tests/serialize/bug62373.phpt ext/standard/var.c

2012-06-25 Thread Moriyoshi Koizumi
Commit:91e1df704eed40325fd963a308e466bbbf96184f
Author:Moriyoshi Koizumi m...@mozo.jp Mon, 25 Jun 2012 19:13:23 
+0900
Parents:   ad641950b3d047fc20729b7a18c62b414622cc79
Branches:  PHP-5.4 master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=91e1df704eed40325fd963a308e466bbbf96184f

Log:
Fix bug #62373 (serialize() generates wrong reference to the object)

Bugs:
https://bugs.php.net/62373

Changed paths:
  A  ext/standard/tests/serialize/bug62373.phpt
  M  ext/standard/var.c


Diff:
diff --git a/ext/standard/tests/serialize/bug62373.phpt 
b/ext/standard/tests/serialize/bug62373.phpt
new file mode 100644
index 000..666c33e
--- /dev/null
+++ b/ext/standard/tests/serialize/bug62373.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #62373 (serialize() generates wrong reference to the object)
+--FILE--
+?php
+class A {}
+class B {}
+
+$size_of_ce = (((int)(log(PHP_INT_MAX) / log(2)) + 1 == 32 ? 368: 680) + 15)  
~15;
+$dummy = array();
+$b = new B();
+$period = $size_of_ce  5;
+for ($i = 0; $i  $period * 3; $i++) {
+$a = new A();
+$s = unserialize(serialize(array($b, $a)));
+if ($s[0] === $s[1]) {
+echo OOPS\n;
+break; 
+}
+$dummy[] = $a;
+}
+
+echo OK\n;
+?
+--EXPECT--
+OK
diff --git a/ext/standard/var.c b/ext/standard/var.c
index c6126e9..735d0a7 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -541,12 +541,9 @@ static inline int php_add_var_hash(HashTable *var_hash, 
zval *var, void *var_old
 
/* relies on (long) being a perfect hash function for data pointers,
 * however the actual identity of an object has had to be determined
-* by its object handle and the class entry since 5.0. */
+* by its object handle since 5.0. */
if ((Z_TYPE_P(var) == IS_OBJECT)  Z_OBJ_HT_P(var)-get_class_entry) {
-   p = smart_str_print_long(id + sizeof(id) - 1,
-   (((size_t)Z_OBJCE_P(var)  5)
-   | ((size_t)Z_OBJCE_P(var)  (sizeof(long) * 8 
- 5)))
-   + (long) Z_OBJ_HANDLE_P(var));
+   p = smart_str_print_long(id + sizeof(id) - 1, (long) 
Z_OBJ_HANDLE_P(var));
*(--p) = 'O';
len = id + sizeof(id) - 1 - p;
} else {


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] com php-src: BFN: NEWS

2012-06-25 Thread Moriyoshi Koizumi
Commit:ce2082d24f2461b6403e13563ed18656a95581fa
Author:Moriyoshi Koizumi m...@mozo.jp Mon, 25 Jun 2012 19:20:38 
+0900
Parents:   e42718227945202044516c71f0098fe464987410
Branches:  PHP-5.3

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=ce2082d24f2461b6403e13563ed18656a95581fa

Log:
BFN

Changed paths:
  M  NEWS


Diff:
diff --git a/NEWS b/NEWS
index b9bb009..63e91f5 100644
--- a/NEWS
+++ b/NEWS
@@ -92,6 +92,8 @@ PHP   
 NEWS
 (Anatoliy)
   . Fixed bug #61991 (long overflow in realpath_cache_get()). (Anatoliy)
   . Changed php://fd to be available only for CLI.
+  . Fixed bug #62373 (serialize() generates wrong reference to the object).
+(Moriyoshi)
 
 - Fileinfo:
   . Fixed bug #61812 (Uninitialised value used in libmagic).


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php