[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug48757.phpt

2009-07-01 Thread Kalle Sommer Nielsen
kalle   Wed Jul  1 17:37:42 2009 UTC

  Added files: 
/php-src/ext/reflection/tests   bug48757.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Fixed bug #48757 (ReflectionFunction::invoke() parameter issues)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.346r2=1.347diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.346 
php-src/ext/reflection/php_reflection.c:1.347
--- php-src/ext/reflection/php_reflection.c:1.346   Tue Jun 16 14:29:18 2009
+++ php-src/ext/reflection/php_reflection.c Wed Jul  1 17:37:42 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.346 2009/06/16 14:29:18 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.347 2009/07/01 17:37:42 kalle Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1763,7 +1763,7 @@
 }
 /* }}} */
 
-/* {{{ proto public mixed ReflectionFunction::invoke(mixed* args) U
+/* {{{ proto public mixed ReflectionFunction::invoke([mixed* args]) U
Invokes the function */
 ZEND_METHOD(reflection_function, invoke)
 {
@@ -1778,7 +1778,7 @@
METHOD_NOTSTATIC(reflection_function_ptr);
GET_REFLECTION_OBJECT_PTR(fptr);
 
-   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, +, params, 
num_args) == FAILURE) {
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, *, params, 
num_args) == FAILURE) {
return;
}
 
@@ -5249,7 +5249,7 @@
ZEND_ARG_INFO(0, name)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO(arginfo_reflection_function_invoke, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_reflection_function_invoke, 0, 0, 0)
ZEND_ARG_INFO(0, args)
 ZEND_END_ARG_INFO()
 
@@ -5687,7 +5687,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Revision: 1.346 $);
+   php_info_print_table_row(2, Version, $Revision: 1.347 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5701,7 +5701,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   $Revision: 1.346 $,
+   $Revision: 1.347 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug48757.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/bug48757.phpt
+++ php-src/ext/reflection/tests/bug48757.phpt
--TEST--
Bug #48757 (ReflectionFunction::invoke() parameter issues)
--FILE--
?php
function test() {
echo Hello World\n;
}

function another_test($parameter) {
var_dump($parameter);
}

$func = new ReflectionFunction('test');
$func-invoke();

$func = new ReflectionFunction('another_test');
$func-invoke('testing');
?
--EXPECT--
Hello World
unicode(7) testing



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2009-07-01 Thread Kalle Sommer Nielsen
kalle   Wed Jul  1 17:42:48 2009 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Fixed memory leak if zero parameters are passed, Thanks Felipe
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.347r2=1.348diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.347 
php-src/ext/reflection/php_reflection.c:1.348
--- php-src/ext/reflection/php_reflection.c:1.347   Wed Jul  1 17:37:42 2009
+++ php-src/ext/reflection/php_reflection.c Wed Jul  1 17:42:48 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.347 2009/07/01 17:37:42 kalle Exp $ */
+/* $Id: php_reflection.c,v 1.348 2009/07/01 17:42:48 kalle Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1800,7 +1800,9 @@
 
result = zend_call_function(fci, fcc TSRMLS_CC);
 
-   efree(params);
+   if (num_args) {
+   efree(params);
+   }
 
if (result == FAILURE) {
zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, 
@@ -5687,7 +5689,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Revision: 1.347 $);
+   php_info_print_table_row(2, Version, $Revision: 1.348 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5701,7 +5703,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   $Revision: 1.347 $,
+   $Revision: 1.348 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c ZendEngine2 zend_stream.h

2009-06-16 Thread Felipe Pena
felipe  Tue Jun 16 14:29:19 2009 UTC

  Modified files:  
/ZendEngine2zend_stream.h 
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fixed build (removed trailing comma) patch by Seiji Masugata s.masugata at 
digicom.dnp.co.jp
  
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_stream.h?r1=1.16r2=1.17diff_format=u
Index: ZendEngine2/zend_stream.h
diff -u ZendEngine2/zend_stream.h:1.16 ZendEngine2/zend_stream.h:1.17
--- ZendEngine2/zend_stream.h:1.16  Wed Mar 11 22:11:41 2009
+++ ZendEngine2/zend_stream.h   Tue Jun 16 14:29:18 2009
@@ -16,7 +16,7 @@
+--+
 */
 
-/* $Id: zend_stream.h,v 1.16 2009/03/11 22:11:41 shire Exp $ */
+/* $Id: zend_stream.h,v 1.17 2009/06/16 14:29:18 felipe Exp $ */
 
 #ifndef ZEND_STREAM_H
 #define ZEND_STREAM_H
@@ -36,7 +36,7 @@
ZEND_HANDLE_FD,
ZEND_HANDLE_FP,
ZEND_HANDLE_STREAM,
-   ZEND_HANDLE_MAPPED,
+   ZEND_HANDLE_MAPPED
 } zend_stream_type;
 
 typedef struct _zend_mmap {
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.345r2=1.346diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.345 
php-src/ext/reflection/php_reflection.c:1.346
--- php-src/ext/reflection/php_reflection.c:1.345   Mon May 25 14:32:14 2009
+++ php-src/ext/reflection/php_reflection.c Tue Jun 16 14:29:18 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.345 2009/05/25 14:32:14 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.346 2009/06/16 14:29:18 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -186,7 +186,7 @@
REF_TYPE_OTHER,  /* Must be 0 */
REF_TYPE_FUNCTION,
REF_TYPE_PARAMETER,
-   REF_TYPE_PROPERTY,
+   REF_TYPE_PROPERTY
 } reflection_type_t;
 
 /* Struct for reflection objects */
@@ -5687,7 +5687,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Revision: 1.345 $);
+   php_info_print_table_row(2, Version, $Revision: 1.346 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5701,7 +5701,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   $Revision: 1.345 $,
+   $Revision: 1.346 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug48336.phpt

2009-05-21 Thread Arnaud Le Blanc
lbarnaudThu May 21 16:01:22 2009 UTC

  Added files: 
/php-src/ext/reflection/tests   bug48336.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Fixed bug #48336 (ReflectionProperty::getDeclaringClass() does not 
  work with redeclared property) 
  (patch by Markus dot Lidel at shadowconnect dot com)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.343r2=1.344diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.343 
php-src/ext/reflection/php_reflection.c:1.344
--- php-src/ext/reflection/php_reflection.c:1.343   Mon Apr 27 19:46:02 2009
+++ php-src/ext/reflection/php_reflection.c Thu May 21 16:01:22 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.343 2009/04/27 19:46:02 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.344 2009/05/21 16:01:22 lbarnaud Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4843,6 +4843,10 @@
break;
}
ce = tmp_ce;
+   if (tmp_ce == tmp_info-ce) {
+   /* declared in this class, done */
+   break;
+   }
tmp_ce = tmp_ce-parent;
}
 
@@ -5683,7 +5687,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Revision: 1.343 $);
+   php_info_print_table_row(2, Version, $Revision: 1.344 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5697,7 +5701,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   $Revision: 1.343 $,
+   $Revision: 1.344 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug48336.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/bug48336.phpt
+++ php-src/ext/reflection/tests/bug48336.phpt
--TEST--
Bug #48286 (ReflectionProperty::getDeclaringClass() does not work with 
redeclared properties)
--FILE--
?php
class A {
}

class B extends A {
  static protected $prop;
}

class C extends B {
  static protected $prop;
}

class D extends C {
}

class E extends D {
}

class F extends E {
  static protected $prop;
}

$class = 'A';
for($class = 'A'; $class = 'F'; $class ++) {
  print($class.' = ');
  try {
$rp = new ReflectionProperty($class, 'prop');
print($rp-getDeclaringClass()-getName());
  } catch(Exception $e) {
print('N/A');
  }
  print(\n);
}
?
--EXPECT--
A = N/A
B = B
C = C
D = C
E = C
F = F



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests 002.phpt 008.phpt ReflectionClass_getMethod_001.phpt ReflectionClass_getMethods_001.phpt ReflectionClass_getProperties_00

2009-04-27 Thread Felipe Pena
felipe  Mon Apr 27 19:46:03 2009 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   002.phpt 008.phpt 
ReflectionClass_getMethod_001.phpt 
ReflectionClass_getMethods_001.phpt 
ReflectionClass_getProperties_001.phpt 
ReflectionClass_getProperty_001.phpt 
ReflectionClass_getProperty_003.phpt 
ReflectionClass_getProperty_004.phpt 

ReflectionMethod_getModifiers_basic.phpt 
  Log:
  - Fixed bug #47254 (Wrong Reflection for extends class)
  http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.342r2=1.343diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.342 
php-src/ext/reflection/php_reflection.c:1.343
--- php-src/ext/reflection/php_reflection.c:1.342   Sat Apr  4 14:35:28 2009
+++ php-src/ext/reflection/php_reflection.c Mon Apr 27 19:46:02 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.342 2009/04/04 14:35:28 sebastian Exp $ */
+/* $Id: php_reflection.c,v 1.343 2009/04/27 19:46:02 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1239,7 +1239,8 @@
MAKE_STD_ZVAL(name);
MAKE_STD_ZVAL(classname);
ZVAL_TEXT(name, method-common.function_name, 1);
-   ZVAL_TEXTL(classname, ce-name, ce-name_length, 1);
+   ZVAL_UNICODEL(classname, method-common.scope-name.u, 
method-common.scope-name_length, 1);
+
reflection_instantiate(reflection_method_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object 
TSRMLS_CC);
intern-ptr = method;
@@ -1283,7 +1284,7 @@
MAKE_STD_ZVAL(name);
MAKE_STD_ZVAL(classname);
ZVAL_TEXT(name, prop_name, 1);
-   ZVAL_TEXTL(classname, ce-name, ce-name_length, 1);
+   ZVAL_UNICODEL(classname, prop-ce-name.u, prop-ce-name_length, 1);
 
reflection_instantiate(reflection_property_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object 
TSRMLS_CC);
@@ -2542,11 +2543,6 @@
zval_dtor(ztmp);
}
 
-   MAKE_STD_ZVAL(classname);
-   ZVAL_TEXTL(classname, ce-name, ce-name_length, 1);
-
-   zend_ascii_hash_update(Z_OBJPROP_P(object), class, sizeof(class), 
(void **) classname, sizeof(zval *), NULL);
-   
lcname = zend_u_str_case_fold(type, name_str, name_len, 1, lcname_len);
 
if (ce == zend_ce_closure  orig_obj  (lcname_len == 
sizeof(ZEND_INVOKE_FUNC_NAME)-1)
@@ -2589,18 +2585,25 @@
return;
}
}
-
+   
+   MAKE_STD_ZVAL(classname);
MAKE_STD_ZVAL(name);
+
if (intern-obj) {
-   ZVAL_ZSTRL(name, type, name_str, name_len, 1);
+   ZVAL_UNICODEL(classname, ce-name.u, ce-name_length, 1);
+   ZVAL_ZSTRL(name, type, name_str, name_len, 1);  
} else {
+   ZVAL_UNICODEL(classname, mptr-common.scope-name.u, 
mptr-common.scope-name_length, 1);
ZVAL_TEXT(name, mptr-common.function_name, 1);
}
efree(lcname.v);
if (free_name_str) {
efree(name_str.v);
}
+   
+   zend_ascii_hash_update(Z_OBJPROP_P(object), class, sizeof(class), 
(void **) classname, sizeof(zval *), NULL);
zend_ascii_hash_update(Z_OBJPROP_P(object), name, sizeof(name), 
(void **) name, sizeof(zval *), NULL);
+   
intern-ptr = mptr;
intern-ref_type = REF_TYPE_FUNCTION;
intern-ce = ce;
@@ -4525,17 +4528,17 @@
}
 
MAKE_STD_ZVAL(classname);
-   ZVAL_TEXTL(classname, ce-name, ce-name_length, 1);
-   zend_ascii_hash_update(Z_OBJPROP_P(object), class, sizeof(class), 
(void **) classname, sizeof(zval *), NULL);
-   
-   
MAKE_STD_ZVAL(propname);
+
if (dynam_prop == 0) {
zend_u_unmangle_property_name(IS_UNICODE, property_info-name, 
property_info-name_length, class_name, prop_name);
+   ZVAL_UNICODEL(classname, property_info-ce-name.u, 
property_info-ce-name_length, 1);
ZVAL_TEXT(propname, prop_name, 1);
} else {
+   ZVAL_UNICODEL(classname, ce-name.u, ce-name_length, 1);
ZVAL_TEXTL(propname, name_str, name_len, 1);
}
+   zend_ascii_hash_update(Z_OBJPROP_P(object), class, sizeof(class), 
(void **) classname, sizeof(zval *), NULL);
zend_ascii_hash_update(Z_OBJPROP_P(object), name, sizeof(name), 
(void **) propname, sizeof(zval *), NULL);
 
reference = (property_reference*) emalloc(sizeof(property_reference));
@@ 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests reflectionProperty_setAccessible.phpt

2009-04-04 Thread Sebastian Bergmann
sebastian   Sat Apr  4 14:35:29 2009 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   reflectionProperty_setAccessible.phpt 
  Log:
  Fix issue reported by Roman Borschel.
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.341r2=1.342diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.341 
php-src/ext/reflection/php_reflection.c:1.342
--- php-src/ext/reflection/php_reflection.c:1.341   Thu Mar 26 20:01:57 2009
+++ php-src/ext/reflection/php_reflection.c Sat Apr  4 14:35:28 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.341 2009/03/26 20:01:57 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.342 2009/04/04 14:35:28 sebastian Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4726,7 +4726,7 @@
}
zend_u_unmangle_property_name(IS_UNICODE, ref-prop.name, 
ref-prop.name_length, class_name, prop_name);
prop_name_len = u_strlen(prop_name.u);
-   member_p = zend_u_read_property(Z_OBJCE_P(object), object, 
IS_UNICODE, prop_name, prop_name_len, 1 TSRMLS_CC);
+   member_p = zend_u_read_property(ref-ce, object, IS_UNICODE, 
prop_name, prop_name_len, 1 TSRMLS_CC);
*return_value= *member_p;
zval_copy_ctor(return_value);
INIT_PZVAL(return_value);
@@ -4807,7 +4807,7 @@
}
zend_u_unmangle_property_name(IS_UNICODE, ref-prop.name, 
ref-prop.name_length, class_name, prop_name);
prop_name_len = u_strlen(prop_name.u);
-   zend_u_update_property(Z_OBJCE_P(object), object, IS_UNICODE, 
prop_name, prop_name_len, value TSRMLS_CC);
+   zend_u_update_property(ref-ce, object, IS_UNICODE, prop_name, 
prop_name_len, value TSRMLS_CC);
}
 }
 /* }}} */
@@ -5680,7 +5680,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Revision: 1.341 $);
+   php_info_print_table_row(2, Version, $Revision: 1.342 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5694,7 +5694,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   $Revision: 1.341 $,
+   $Revision: 1.342 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt?r1=1.3r2=1.4diff_format=u
Index: php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt
diff -u php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt:1.3 
php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt:1.4
--- php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt:1.3  
Sat Nov 29 15:58:30 2008
+++ php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt  Sat Apr 
 4 14:35:28 2009
@@ -9,6 +9,8 @@
 private static $privateStatic = 'd';
 }
 
+class B extends A {}
+
 $a   = new A;
 $protected   = new ReflectionProperty($a, 'protected');
 $protectedStatic = new ReflectionProperty('A', 'protectedStatic');
@@ -66,6 +68,52 @@
 var_dump($protectedStatic-getValue());
 var_dump($private-getValue($a));
 var_dump($privateStatic-getValue());
+
+$a   = new A;
+$b   = new B;
+$protected   = new ReflectionProperty($b, 'protected');
+$protectedStatic = new ReflectionProperty('B', 'protectedStatic');
+$private = new ReflectionProperty($a, 'private');
+
+try {
+var_dump($protected-getValue($b));
+}
+
+catch (ReflectionException $e) {
+var_dump($e-getMessage());
+}
+
+try {
+var_dump($protectedStatic-getValue());
+}
+
+catch (ReflectionException $e) {
+var_dump($e-getMessage());
+}
+
+try {
+var_dump($private-getValue($b));
+}
+
+catch (ReflectionException $e) {
+var_dump($e-getMessage());
+}
+
+$protected-setAccessible(TRUE);
+$protectedStatic-setAccessible(TRUE);
+$private-setAccessible(TRUE);
+
+var_dump($protected-getValue($b));
+var_dump($protectedStatic-getValue());
+var_dump($private-getValue($b));
+
+$protected-setValue($b, 'e');
+$protectedStatic-setValue('f');
+$private-setValue($b, 'g');
+
+var_dump($protected-getValue($b));
+var_dump($protectedStatic-getValue());
+var_dump($private-getValue($b));
 ?
 --EXPECT--
 unicode(44) Cannot access non-public member A::protected
@@ -80,3 +128,12 @@
 unicode(1) f
 unicode(1) g
 unicode(1) h
+unicode(44) Cannot access non-public member B::protected
+unicode(50) Cannot access non-public member B::protectedStatic
+unicode(42) Cannot access non-public member A::private
+unicode(1) a
+unicode(1) f
+unicode(1) c
+unicode(1) e
+unicode(1) f
+unicode(1) g



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2009-01-03 Thread Marcus Boerger
helly   Sat Jan  3 12:20:27 2009 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Add minimalistic closure support
  http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.330r2=1.331diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.330 
php-src/ext/reflection/php_reflection.c:1.331
--- php-src/ext/reflection/php_reflection.c:1.330   Wed Dec 31 14:37:17 2008
+++ php-src/ext/reflection/php_reflection.c Sat Jan  3 12:20:27 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.330 2008/12/31 14:37:17 helly Exp $ */
+/* $Id: php_reflection.c,v 1.331 2009/01/03 12:20:27 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -323,7 +323,7 @@
 /* }}} */
 
 static void _const_string(string *str, zstr name, zval *value, char *indent 
TSRMLS_DC);
-static void _function_string(string *str, zend_function *fptr, 
zend_class_entry *scope, char *indent TSRMLS_DC);
+static void _function_string(string *str, zend_function *fptr, 
zend_class_entry *scope, zval* closure, char *indent TSRMLS_DC);
 static void _property_string(string *str, zend_property_info *prop, zstr 
prop_name, char* indent TSRMLS_DC);
 static void _class_string(string *str, zend_class_entry *ce, zval *obj, char 
*indent TSRMLS_DC);
 static void _extension_string(string *str, zend_module_entry *module, char 
*indent TSRMLS_DC);
@@ -489,7 +489,7 @@
 ((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce))
{
string_printf(str, \n);
-   _function_string(str, mptr, ce, 
sub_indent.string TSRMLS_CC);
+   _function_string(str, mptr, ce, NULL, 
sub_indent.string TSRMLS_CC);
}
zend_hash_move_forward_ex(ce-function_table, 
pos);
}
@@ -595,7 +595,7 @@
}
 
string_printf(dyn, \n);
-   _function_string(dyn, mptr, 
ce, sub_indent.string TSRMLS_CC);
+   _function_string(dyn, mptr, 
ce, NULL, sub_indent.string TSRMLS_CC);
count++;
_free_function(closure 
TSRMLS_CC);
}
@@ -767,7 +767,7 @@
 /* }}} */
 
 /* {{{ _function_string */
-static void _function_string(string *str, zend_function *fptr, 
zend_class_entry *scope, char* indent TSRMLS_DC)
+static void _function_string(string *str, zend_function *fptr, 
zend_class_entry *scope, zval* closure, char* indent TSRMLS_DC)
 {
string param_indent;
zend_function *overwrites;
@@ -782,7 +782,8 @@
string_printf(str, %s%v\n, indent, 
fptr-op_array.doc_comment.v);
}
 
-   string_printf(str, fptr-common.scope ? %sMethod [  : %sFunction [ 
, indent);
+   string_write(str, indent, strlen(indent));
+   string_printf(str, closure ? Closure [  : (fptr-common.scope ? 
Method [  : Function [ ));
string_printf(str, (fptr-type == ZEND_USER_FUNCTION) ? user : 
internal);
if (fptr-common.fn_flags  ZEND_ACC_DEPRECATED) {
string_printf(str, , deprecated);
@@ -858,6 +859,28 @@
}
string_init(param_indent);
string_printf(param_indent, %s  , indent);
+   if (closure) {
+   const zend_function *closure_fptr = 
zend_get_closure_method_def(closure TSRMLS_CC);
+   if (closure_fptr-type == ZEND_USER_FUNCTION  
closure_fptr-op_array.static_variables) {
+   HashTable *static_variables = 
closure_fptr-op_array.static_variables;
+   HashPosition pos;
+   uint key_len;
+   zstr key;
+   ulong num_index, index = 0;
+   int count = zend_hash_num_elements(static_variables);
+   if (count) {
+   string_printf(str, \n);
+   string_printf(str, %s  - Static Parameters 
[%d] {\n, indent, count);
+   
zend_hash_internal_pointer_reset_ex(static_variables, pos);
+   while (index++  count) {
+   
zend_hash_get_current_key_ex(static_variables, key, key_len, num_index, 0, 
pos);
+   string_printf(str, %sParameter #%d 
[ $%v ]\n, indent, index++, key);
+   
zend_hash_move_forward_ex(static_variables, pos);
+   }   
+  

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2009-01-03 Thread Marcus Boerger
helly   Sat Jan  3 12:27:44 2009 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Small reordering
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.331r2=1.332diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.331 
php-src/ext/reflection/php_reflection.c:1.332
--- php-src/ext/reflection/php_reflection.c:1.331   Sat Jan  3 12:20:27 2009
+++ php-src/ext/reflection/php_reflection.c Sat Jan  3 12:27:43 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.331 2009/01/03 12:20:27 helly Exp $ */
+/* $Id: php_reflection.c,v 1.332 2009/01/03 12:27:43 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -857,8 +857,6 @@
fptr-op_array.line_start,
fptr-op_array.line_end);
}
-   string_init(param_indent);
-   string_printf(param_indent, %s  , indent);
if (closure) {
const zend_function *closure_fptr = 
zend_get_closure_method_def(closure TSRMLS_CC);
if (closure_fptr-type == ZEND_USER_FUNCTION  
closure_fptr-op_array.static_variables) {
@@ -881,6 +879,8 @@
}
}
}
+   string_init(param_indent);
+   string_printf(param_indent, %s  , indent);
_function_parameter_string(str, fptr, param_indent.string TSRMLS_CC);
string_free(param_indent);
string_printf(str, %s}\n, indent);
@@ -5482,7 +5482,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Revision: 1.331 $);
+   php_info_print_table_row(2, Version, $Revision: 1.332 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5496,7 +5496,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   $Revision: 1.331 $,
+   $Revision: 1.332 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2009-01-03 Thread Marcus Boerger
helly   Sat Jan  3 14:20:07 2009 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Improved closure support
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.332r2=1.333diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.332 
php-src/ext/reflection/php_reflection.c:1.333
--- php-src/ext/reflection/php_reflection.c:1.332   Sat Jan  3 12:27:43 2009
+++ php-src/ext/reflection/php_reflection.c Sat Jan  3 14:20:07 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.332 2009/01/03 12:27:43 helly Exp $ */
+/* $Id: php_reflection.c,v 1.333 2009/01/03 14:20:07 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -219,6 +219,18 @@
 }
 /* }}} */
 
+static void _default_lookup_entry(zval *object, char *name, int name_len, zval 
**return_value TSRMLS_DC) /* {{{ */
+{
+   zval **value;
+
+   if (zend_ascii_hash_find(Z_OBJPROP_P(object), name, name_len, (void **) 
value) == FAILURE) {
+   *return_value = NULL;
+   } else {
+   *return_value = *value;
+   }
+}
+/* }}} */
+
 static void reflection_register_implement(zend_class_entry *class_entry, 
zend_class_entry *interface_entry TSRMLS_DC) /* {{{ */
 {
zend_uint num_interfaces = ++class_entry-num_interfaces;
@@ -323,7 +335,7 @@
 /* }}} */
 
 static void _const_string(string *str, zstr name, zval *value, char *indent 
TSRMLS_DC);
-static void _function_string(string *str, zend_function *fptr, 
zend_class_entry *scope, zval* closure, char *indent TSRMLS_DC);
+static void _function_string(string *str, zend_function *fptr, 
zend_class_entry *scope, zval* prop_name, zval* closure, char *indent 
TSRMLS_DC);
 static void _property_string(string *str, zend_property_info *prop, zstr 
prop_name, char* indent TSRMLS_DC);
 static void _class_string(string *str, zend_class_entry *ce, zval *obj, char 
*indent TSRMLS_DC);
 static void _extension_string(string *str, zend_module_entry *module, char 
*indent TSRMLS_DC);
@@ -489,7 +501,7 @@
 ((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce))
{
string_printf(str, \n);
-   _function_string(str, mptr, ce, NULL, 
sub_indent.string TSRMLS_CC);
+   _function_string(str, mptr, ce, NULL, 
NULL, sub_indent.string TSRMLS_CC);
}
zend_hash_move_forward_ex(ce-function_table, 
pos);
}
@@ -595,7 +607,7 @@
}
 
string_printf(dyn, \n);
-   _function_string(dyn, mptr, 
ce, NULL, sub_indent.string TSRMLS_CC);
+   _function_string(dyn, mptr, 
ce, NULL, NULL, sub_indent.string TSRMLS_CC);
count++;
_free_function(closure 
TSRMLS_CC);
}
@@ -767,7 +779,7 @@
 /* }}} */
 
 /* {{{ _function_string */
-static void _function_string(string *str, zend_function *fptr, 
zend_class_entry *scope, zval* closure, char* indent TSRMLS_DC)
+static void _function_string(string *str, zend_function *fptr, 
zend_class_entry *scope, zval* prop_name, zval* closure, char* indent TSRMLS_DC)
 {
string param_indent;
zend_function *overwrites;
@@ -849,7 +861,11 @@
if (fptr-op_array.return_reference) {
string_printf(str, );
}
-   string_printf(str, %v ] {\n, fptr-common.function_name);
+   if (closure  prop_name) {
+   string_printf(str, %R ] {\n, Z_TYPE_P(prop_name), 
Z_UNIVAL_P(prop_name));
+   } else {
+   string_printf(str, %v ] {\n, fptr-common.function_name);
+   }
/* The information where a function is declared is only available for 
user classes */
if (fptr-type == ZEND_USER_FUNCTION) {
string_printf(str, %s  @@ %s %d - %d\n, indent, 
@@ -1085,7 +1101,7 @@
continue;
}

-   _function_string(str, fptr, NULL, NULL,  
TSRMLS_CC);
+   _function_string(str, fptr, NULL, NULL, NULL,  
TSRMLS_CC);
func++;
}
string_printf(str, %s  }\n, indent);
@@ -1504,7 +1520,7 @@
}
 
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() 
TSRMLS_CC, O, closure, zend_ce_closure) == SUCCESS) {
-   fptr = zend_get_closure_invoke_method(closure TSRMLS_CC);
+   fptr = 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2009-01-03 Thread Marcus Boerger
helly   Sat Jan  3 19:02:07 2009 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Add ReflectionFunctionAbstract::getClosureThis()
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.333r2=1.334diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.333 
php-src/ext/reflection/php_reflection.c:1.334
--- php-src/ext/reflection/php_reflection.c:1.333   Sat Jan  3 14:20:07 2009
+++ php-src/ext/reflection/php_reflection.c Sat Jan  3 19:02:06 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.333 2009/01/03 14:20:07 helly Exp $ */
+/* $Id: php_reflection.c,v 1.334 2009/01/03 19:02:06 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1585,6 +1585,19 @@
 }
 /* }}} */
 
+/* {{{ proto public bool ReflectionFunction::getClosureThis() U
+   Returns this pointer bound to closure */
+ZEND_METHOD(reflection_function, getClosureThis)
+{
+   reflection_object *intern;
+   zend_function *fptr;
+
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
+   GET_REFLECTION_OBJECT_PTR(fptr);
+   RETURN_ZVAL(intern-obj, 1, 0);
+}
+/* }}} */
+
 /* {{{ proto public bool ReflectionFunction::isInternal() U
Returns whether this is an internal function */
 ZEND_METHOD(reflection_function, isInternal)
@@ -5106,25 +5119,26 @@
 static const zend_function_entry reflection_function_abstract_functions[] = {
ZEND_ME(reflection, __clone, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
PHP_ABSTRACT_ME(reflection_function, __toString, NULL)
+   ZEND_ME(reflection_function, inNamespace, NULL, 0)
ZEND_ME(reflection_function, isClosure, NULL, 0)
+   ZEND_ME(reflection_function, isDeprecated, NULL, 0)
ZEND_ME(reflection_function, isInternal, NULL, 0)
ZEND_ME(reflection_function, isUserDefined, NULL, 0)
-   ZEND_ME(reflection_function, getName, NULL, 0)
-   ZEND_ME(reflection_function, getFileName, NULL, 0)
-   ZEND_ME(reflection_function, getStartLine, NULL, 0)
-   ZEND_ME(reflection_function, getEndLine, NULL, 0)
+   ZEND_ME(reflection_function, getClosureThis, NULL, 0)
ZEND_ME(reflection_function, getDocComment, NULL, 0)
-   ZEND_ME(reflection_function, getStaticVariables, NULL, 0)
-   ZEND_ME(reflection_function, returnsReference, NULL, 0)
-   ZEND_ME(reflection_function, getParameters, NULL, 0)
-   ZEND_ME(reflection_function, getNumberOfParameters, NULL, 0)
-   ZEND_ME(reflection_function, getNumberOfRequiredParameters, NULL, 0)
+   ZEND_ME(reflection_function, getEndLine, NULL, 0)
ZEND_ME(reflection_function, getExtension, NULL, 0)
ZEND_ME(reflection_function, getExtensionName, NULL, 0)
-   ZEND_ME(reflection_function, isDeprecated, NULL, 0)
-   ZEND_ME(reflection_function, inNamespace, NULL, 0)
+   ZEND_ME(reflection_function, getFileName, NULL, 0)
+   ZEND_ME(reflection_function, getName, NULL, 0)
ZEND_ME(reflection_function, getNamespaceName, NULL, 0)
+   ZEND_ME(reflection_function, getNumberOfParameters, NULL, 0)
+   ZEND_ME(reflection_function, getNumberOfRequiredParameters, NULL, 0)
+   ZEND_ME(reflection_function, getParameters, NULL, 0)
ZEND_ME(reflection_function, getShortName, NULL, 0)
+   ZEND_ME(reflection_function, getStartLine, NULL, 0)
+   ZEND_ME(reflection_function, getStaticVariables, NULL, 0)
+   ZEND_ME(reflection_function, returnsReference, NULL, 0)
{NULL, NULL, NULL}
 };
 
@@ -5532,7 +5546,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Revision: 1.333 $);
+   php_info_print_table_row(2, Version, $Revision: 1.334 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5546,7 +5560,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   $Revision: 1.333 $,
+   $Revision: 1.334 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2009-01-03 Thread Marcus Boerger
helly   Sat Jan  3 19:08:27 2009 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Return this pointer and not closure itself
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.334r2=1.335diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.334 
php-src/ext/reflection/php_reflection.c:1.335
--- php-src/ext/reflection/php_reflection.c:1.334   Sat Jan  3 19:02:06 2009
+++ php-src/ext/reflection/php_reflection.c Sat Jan  3 19:08:27 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.334 2009/01/03 19:02:06 helly Exp $ */
+/* $Id: php_reflection.c,v 1.335 2009/01/03 19:08:27 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1591,10 +1591,14 @@
 {
reflection_object *intern;
zend_function *fptr;
+   zval* closure_this;
 
METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
GET_REFLECTION_OBJECT_PTR(fptr);
-   RETURN_ZVAL(intern-obj, 1, 0);
+   if (intern-obj) {
+   closure_this = zend_get_closure_this_ptr(intern-obj TSRMLS_CC);
+   RETURN_ZVAL(closure_this, 1, 0);
+   }
 }
 /* }}} */
 
@@ -5546,7 +5550,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Revision: 1.334 $);
+   php_info_print_table_row(2, Version, $Revision: 1.335 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5560,7 +5564,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   $Revision: 1.334 $,
+   $Revision: 1.335 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2009-01-03 Thread Marcus Boerger
helly   Sat Jan  3 20:03:45 2009 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Show closure's bound  as static parameter
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.335r2=1.336diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.335 
php-src/ext/reflection/php_reflection.c:1.336
--- php-src/ext/reflection/php_reflection.c:1.335   Sat Jan  3 19:08:27 2009
+++ php-src/ext/reflection/php_reflection.c Sat Jan  3 20:03:45 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.335 2009/01/03 19:08:27 helly Exp $ */
+/* $Id: php_reflection.c,v 1.336 2009/01/03 20:03:45 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -875,24 +875,32 @@
}
if (closure) {
const zend_function *closure_fptr = 
zend_get_closure_method_def(closure TSRMLS_CC);
+   zval *closure_this = zend_get_closure_this_ptr(closure 
TSRMLS_CC);
+   HashTable *static_variables = NULL;
+   int index = 0, count = closure_this ? 1 : 0;
if (closure_fptr-type == ZEND_USER_FUNCTION  
closure_fptr-op_array.static_variables) {
-   HashTable *static_variables = 
closure_fptr-op_array.static_variables;
-   HashPosition pos;
-   uint key_len;
-   zstr key;
-   ulong num_index, index = 0;
-   int count = zend_hash_num_elements(static_variables);
-   if (count) {
-   string_printf(str, \n);
-   string_printf(str, %s  - Static Parameters 
[%d] {\n, indent, count);
+   static_variables = 
closure_fptr-op_array.static_variables;
+   count += zend_hash_num_elements(static_variables);
+   }
+   if (count) {
+   string_printf(str, \n);
+   string_printf(str, %s  - Static Parameters [%d] {\n, 
indent, count);
+   if (closure_this) {
+   string_printf(str, %sParameter #%d [ %v 
$this ]\n, indent, ++index, Z_OBJCE_P(closure_this)-name);
+   }
+   if (static_variables) {
+   HashPosition pos;
+   uint key_len;
+   zstr key;
+   ulong num_index;

zend_hash_internal_pointer_reset_ex(static_variables, pos);
while (index++  count) {

zend_hash_get_current_key_ex(static_variables, key, key_len, num_index, 0, 
pos);
string_printf(str, %sParameter #%d 
[ $%v ]\n, indent, index++, key);

zend_hash_move_forward_ex(static_variables, pos);
-   }   
-   string_printf(str, %s  }\n, indent);
+   }
}
+   string_printf(str, %s  }\n, indent);
}
}
string_init(param_indent);
@@ -5550,7 +5558,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Revision: 1.335 $);
+   php_info_print_table_row(2, Version, $Revision: 1.336 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5564,7 +5572,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   $Revision: 1.335 $,
+   $Revision: 1.336 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests 027.phpt ReflectionMethod_getClosure_error.phpt

2009-01-03 Thread Marcus Boerger
helly   Sat Jan  3 20:40:22 2009 UTC

  Added files: 
/php-src/ext/reflection/tests   027.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   
ReflectionMethod_getClosure_error.phpt 
  Log:
  - Minor corrections and a new test
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.336r2=1.337diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.336 
php-src/ext/reflection/php_reflection.c:1.337
--- php-src/ext/reflection/php_reflection.c:1.336   Sat Jan  3 20:03:45 2009
+++ php-src/ext/reflection/php_reflection.c Sat Jan  3 20:40:22 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.336 2009/01/03 20:03:45 helly Exp $ */
+/* $Id: php_reflection.c,v 1.337 2009/01/03 20:40:22 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -886,7 +886,7 @@
string_printf(str, \n);
string_printf(str, %s  - Static Parameters [%d] {\n, 
indent, count);
if (closure_this) {
-   string_printf(str, %sParameter #%d [ %v 
$this ]\n, indent, ++index, Z_OBJCE_P(closure_this)-name);
+   string_printf(str, %sParameter #%d [ %v 
$this ]\n, indent, index++, Z_OBJCE_P(closure_this)-name);
}
if (static_variables) {
HashPosition pos;
@@ -894,7 +894,7 @@
zstr key;
ulong num_index;

zend_hash_internal_pointer_reset_ex(static_variables, pos);
-   while (index++  count) {
+   while (index  count) {

zend_hash_get_current_key_ex(static_variables, key, key_len, num_index, 0, 
pos);
string_printf(str, %sParameter #%d 
[ $%v ]\n, indent, index++, key);

zend_hash_move_forward_ex(static_variables, pos);
@@ -1605,7 +1605,9 @@
GET_REFLECTION_OBJECT_PTR(fptr);
if (intern-obj) {
closure_this = zend_get_closure_this_ptr(intern-obj TSRMLS_CC);
-   RETURN_ZVAL(closure_this, 1, 0);
+   if (closure_this) {
+   RETURN_ZVAL(closure_this, 1, 0);
+   }
}
 }
 /* }}} */
@@ -5558,7 +5560,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Revision: 1.336 $);
+   php_info_print_table_row(2, Version, $Revision: 1.337 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5572,7 +5574,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   $Revision: 1.336 $,
+   $Revision: 1.337 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/ReflectionMethod_getClosure_error.phpt?r1=1.2r2=1.3diff_format=u
Index: php-src/ext/reflection/tests/ReflectionMethod_getClosure_error.phpt
diff -u php-src/ext/reflection/tests/ReflectionMethod_getClosure_error.phpt:1.2 
php-src/ext/reflection/tests/ReflectionMethod_getClosure_error.phpt:1.3
--- php-src/ext/reflection/tests/ReflectionMethod_getClosure_error.phpt:1.2 
Fri Aug  8 12:42:40 2008
+++ php-src/ext/reflection/tests/ReflectionMethod_getClosure_error.phpt Sat Jan 
 3 20:40:22 2009
@@ -56,9 +56,13 @@
 *** Testing ReflectionMethod::getClosure() : error conditions ***
 
 -- Testing ReflectionMethod::getClosure() function with more than expected no. 
of arguments --
-object(Closure)#%d (0) {
+object(Closure)#%d (1) {
+  [this]=
+  NULL
 }
-object(Closure)#%d (0) {
+object(Closure)#%d (1) {
+  [this]=
+  NULL
 }
 
 Warning: ReflectionMethod::getClosure() expects exactly 1 parameter, 2 given 
in %s on line %d

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/027.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/027.phpt
+++ php-src/ext/reflection/tests/027.phpt
--TEST--
--FILE--
?php

$global = 42;

$func = function($x, stdClass $y=NULL) use($global) {
static $static;
};

ReflectionFunction::Export($func);

$r = new ReflectionFunction($func);

var_dump(@get_class($r-getClosureThis()));
var_dump($r-getName());
var_dump($r-isClosure());

Class Test {
public $func;
function __construct(){
global $global;
$this-func = function($x, stdClass $y = NULL) use($global) {
static $static;
};
}
}

ReflectionMethod::export(new Test, func);

$r = new ReflectionMethod(new Test, func);

var_dump(get_class($r-getClosureThis()));

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2009-01-03 Thread Marcus Boerger
helly   Sat Jan  3 21:06:39 2009 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - MFB Missing namespace changes
  # Now all tests PASS again
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.337r2=1.338diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.337 
php-src/ext/reflection/php_reflection.c:1.338
--- php-src/ext/reflection/php_reflection.c:1.337   Sat Jan  3 20:40:22 2009
+++ php-src/ext/reflection/php_reflection.c Sat Jan  3 21:06:38 2009
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.337 2009/01/03 20:40:22 helly Exp $ */
+/* $Id: php_reflection.c,v 1.338 2009/01/03 21:06:38 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2899,13 +2899,13 @@
RETURN_FALSE;
}
if (Z_TYPE_PP(name) == IS_STRING
-(colon.s = zend_memrchr(Z_STRVAL_PP(name), ':', 
Z_STRLEN_PP(name)))
-colon.s  Z_STRVAL_PP(name)  *(colon.s-1) == ':')
+(colon.s = zend_memrchr(Z_STRVAL_PP(name), '\\', 
Z_STRLEN_PP(name)))
+colon.s  Z_STRVAL_PP(name))
{
RETURN_TRUE;
} else if (Z_TYPE_PP(name) == IS_UNICODE
-(colon.u = u_memrchr(Z_USTRVAL_PP(name), ':', 
Z_USTRLEN_PP(name)))
-colon.u  Z_USTRVAL_PP(name)  *(colon.u-1) == ':')
+(colon.u = u_memrchr(Z_USTRVAL_PP(name), '\\', 
Z_USTRLEN_PP(name)))
+colon.u  Z_USTRVAL_PP(name))
{
RETURN_TRUE;
}
@@ -2913,53 +2913,53 @@
 }
 /* }}} */
 
-/* {{{ proto public string ReflectionFunction::getNamespaceName()
+/* {{{ proto public string ReflectionFunction::getNamespaceName() U
Returns the name of namespace where this function is defined */
 ZEND_METHOD(reflection_function, getNamespaceName)
 {
zval **name;
-   zstr colon;
+   zstr backslash;
 
METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
if (zend_hash_find(Z_OBJPROP_P(getThis()), name, sizeof(name), 
(void **) name) == FAILURE) {
RETURN_FALSE;
}
if (Z_TYPE_PP(name) == IS_STRING
-(colon.s = zend_memrchr(Z_STRVAL_PP(name), ':', 
Z_STRLEN_PP(name)))
-colon.s  Z_STRVAL_PP(name)  *(colon.s-1) == ':')
+(backslash.s = zend_memrchr(Z_STRVAL_PP(name), '\\', 
Z_STRLEN_PP(name)))
+backslash.s  Z_STRVAL_PP(name))
{
-   RETURN_STRINGL(Z_STRVAL_PP(name), colon.s - Z_STRVAL_PP(name) - 
1, 1);
+   RETURN_STRINGL(Z_STRVAL_PP(name), backslash.s - 
Z_STRVAL_PP(name), 1);
} else if (Z_TYPE_PP(name) == IS_UNICODE
-(colon.u = u_memrchr(Z_USTRVAL_PP(name), ':', 
Z_USTRLEN_PP(name)))
-colon.u  Z_USTRVAL_PP(name)  *(colon.u-1) == ':')
+(backslash.u = u_memrchr(Z_USTRVAL_PP(name), '\\', 
Z_USTRLEN_PP(name)))
+backslash.u  Z_USTRVAL_PP(name))
{
-   RETURN_UNICODEL(Z_USTRVAL_PP(name), colon.u - 
Z_USTRVAL_PP(name) - 1, 1);
+   RETURN_UNICODEL(Z_USTRVAL_PP(name), backslash.u - 
Z_USTRVAL_PP(name), 1);
}
RETURN_EMPTY_TEXT();
 }
 /* }}} */
 
-/* {{{ proto public string ReflectionFunction::getShortName()
+/* {{{ proto public string ReflectionFunction::getShortName() U
Returns the short name of the function (without namespace part) */
 ZEND_METHOD(reflection_function, getShortName)
 {
zval **name;
-   zstr colon;
+   zstr backslash;
 
METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
if (zend_hash_find(Z_OBJPROP_P(getThis()), name, sizeof(name), 
(void **) name) == FAILURE) {
RETURN_FALSE;
}
if (Z_TYPE_PP(name) == IS_STRING
-(colon.s = zend_memrchr(Z_STRVAL_PP(name), ':', 
Z_STRLEN_PP(name)))
-colon.s  Z_STRVAL_PP(name)  *(colon.s-1) == ':')
+(backslash.s = zend_memrchr(Z_STRVAL_PP(name), '\\', 
Z_STRLEN_PP(name)))
+backslash.s  Z_STRVAL_PP(name))
{
-   RETURN_STRINGL(colon.s + 1, Z_STRLEN_PP(name) - (colon.s - 
Z_STRVAL_PP(name) + 1), 1);
+   RETURN_STRINGL(backslash.s + 1, Z_STRLEN_PP(name) - 
(backslash.s - Z_STRVAL_PP(name) + 1), 1);
} else if (Z_TYPE_PP(name) == IS_UNICODE
-(colon.u = u_memrchr(Z_USTRVAL_PP(name), ':', 
Z_USTRLEN_PP(name)))
-colon.u  Z_USTRVAL_PP(name)  *(colon.u-1) == ':')
+(backslash.u = u_memrchr(Z_USTRVAL_PP(name), '\\', 
Z_USTRLEN_PP(name)))
+backslash.u  Z_USTRVAL_PP(name))
{
-   RETURN_UNICODEL(colon.u + 1, Z_USTRLEN_PP(name) - (colon.u - 
Z_USTRVAL_PP(name) + 1), 1);
+   RETURN_UNICODEL(backslash.u + 1, 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-12-31 Thread Marcus Boerger
helly   Wed Dec 31 14:37:17 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - MFB Use Revision instead of Id tag for version
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.329r2=1.330diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.329 
php-src/ext/reflection/php_reflection.c:1.330
--- php-src/ext/reflection/php_reflection.c:1.329   Wed Dec 31 11:12:35 2008
+++ php-src/ext/reflection/php_reflection.c Wed Dec 31 14:37:17 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.329 2008/12/31 11:12:35 sebastian Exp $ */
+/* $Id: php_reflection.c,v 1.330 2008/12/31 14:37:17 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -5438,7 +5438,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.329 
2008/12/31 11:12:35 sebastian Exp $);
+   php_info_print_table_row(2, Version, $Revision: 1.330 $);
 
php_info_print_table_end();
 } /* }}} */
@@ -5452,7 +5452,7 @@
NULL,
NULL,
PHP_MINFO(reflection),
-   0.1,
+   $Revision: 1.330 $,
STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests reflectionProperty_setAccessible.phpt

2008-11-29 Thread Sebastian Bergmann
sebastian   Sat Nov 29 15:58:30 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   reflectionProperty_setAccessible.phpt 
  Log:
  Fix #46718: ReflectionProperty::setValue() and 
ReflectionProperty::setAccessible().
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.327r2=1.328diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.327 
php-src/ext/reflection/php_reflection.c:1.328
--- php-src/ext/reflection/php_reflection.c:1.327   Thu Nov 27 19:02:45 2008
+++ php-src/ext/reflection/php_reflection.c Sat Nov 29 15:58:29 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.327 2008/11/27 19:02:45 dmitry Exp $ */
+/* $Id: php_reflection.c,v 1.328 2008/11/29 15:58:29 sebastian Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4537,7 +4537,7 @@
METHOD_NOTSTATIC(reflection_property_ptr);
GET_REFLECTION_OBJECT_PTR(ref);
 
-   if (!(ref-prop.flags  ZEND_ACC_PUBLIC)) {
+   if (!(ref-prop.flags  ZEND_ACC_PUBLIC)  ref-ignore_visibility == 
0) {
_default_get_entry(getThis(), name, sizeof(name), name 
TSRMLS_CC);
zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, 
Cannot access non-public member %v::%v, 
intern-ce-name, Z_UNIVAL(name));
@@ -4581,10 +4581,15 @@
zend_u_hash_quick_update(prop_table, utype, 
ref-prop.name, ref-prop.name_length+1, ref-prop.h, value, sizeof(zval *), 
(void **) foo);
}
} else {
+   zstr class_name, prop_name;
+   int prop_name_len;
+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, oz, 
object, value) == FAILURE) {
return;
}
-   zend_u_update_property(Z_OBJCE_P(object), object, 
UG(unicode)?IS_UNICODE:IS_STRING, ref-prop.name, ref-prop.name_length, value 
TSRMLS_CC);
+   zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, 
ref-prop.name, ref-prop.name_length, class_name, prop_name);
+   prop_name_len = UG(unicode) ? u_strlen(prop_name.u) : 
strlen(prop_name.s);
+   zend_u_update_property(Z_OBJCE_P(object), object, 
UG(unicode)?IS_UNICODE:IS_STRING, prop_name, prop_name_len, value TSRMLS_CC);
}
 }
 /* }}} */
@@ -5433,7 +5438,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.327 
2008/11/27 19:02:45 dmitry Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.328 
2008/11/29 15:58:29 sebastian Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt?r1=1.2r2=1.3diff_format=u
Index: php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt
diff -u php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt:1.2 
php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt:1.3
--- php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt:1.2  
Sat May 24 13:35:03 2008
+++ php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt  Sat Nov 
29 15:58:30 2008
@@ -2,43 +2,81 @@
 Test ReflectionProperty::setAccessible().
 --FILE--
 ?php
-
-class TestClass {
-public $pub;
-public $pub2 = 5;
-static public $stat = static property;
-protected $prot = 4;
-private $priv = keepOut;
+class A {
+protected $protected = 'a';
+protected static $protectedStatic = 'b';
+private $private = 'c';
+private static $privateStatic = 'd';
 }
 
-class AnotherClass {
+$a   = new A;
+$protected   = new ReflectionProperty($a, 'protected');
+$protectedStatic = new ReflectionProperty('A', 'protectedStatic');
+$private = new ReflectionProperty($a, 'private');
+$privateStatic   = new ReflectionProperty('A', 'privateStatic');
+
+try {
+var_dump($protected-getValue($a));
 }
 
-$instance = new TestClass();
+catch (ReflectionException $e) {
+var_dump($e-getMessage());
+}
 
-echo \nProtected property:\n;
-$propInfo = new ReflectionProperty('TestClass', 'prot');
 try {
-var_dump($propInfo-getValue($instance));
+var_dump($protectedStatic-getValue());
 }
-catch(Exception $exc) {
-echo $exc-getMessage(), \n;
+
+catch (ReflectionException $e) {
+var_dump($e-getMessage());
 }
 
-$propInfo-setAccessible(true);
-var_dump($propInfo-getValue($instance));
+try {
+var_dump($private-getValue($a));
+}
+
+catch (ReflectionException $e) {
+var_dump($e-getMessage());
+}
 
-$propInfo-setAccessible(false);
 try {
-var_dump($propInfo-getValue($instance));
+var_dump($privateStatic-getValue());
 }
-catch(Exception 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-11-21 Thread Felipe Pena
felipe  Fri Nov 21 23:32:50 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fixed bug #46604 (ReflectionClass::getProperty() fails) [only in this 
branch]
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.325r2=1.326diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.325 
php-src/ext/reflection/php_reflection.c:1.326
--- php-src/ext/reflection/php_reflection.c:1.325   Mon Nov 17 11:26:23 2008
+++ php-src/ext/reflection/php_reflection.c Fri Nov 21 23:32:50 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.325 2008/11/17 11:26:23 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.326 2008/11/21 23:32:50 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3488,8 +3488,8 @@
if (zend_u_hash_find(ce-properties_info, name_type, name, name_len + 
1, (void**) property_info) == SUCCESS) {
if ((property_info-flags  ZEND_ACC_SHADOW) == 0) {
reflection_property_factory(ce, property_info, 
return_value TSRMLS_CC);
+   return;
}
-   return;
} else if (intern-obj) {
/* Check for dynamic properties */
if 
(zend_u_hash_exists(Z_OBJ_HT_P(intern-obj)-get_properties(intern-obj 
TSRMLS_CC), name_type, name, name_len+1)) {
@@ -5433,7 +5433,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.325 
2008/11/17 11:26:23 felipe Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.326 
2008/11/21 23:32:50 felipe Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-11-14 Thread Hannes Magnusson
bjori   Fri Nov 14 19:22:09 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Interfaces extend other interfaces, not implement
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.323r2=1.324diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.323 
php-src/ext/reflection/php_reflection.c:1.324
--- php-src/ext/reflection/php_reflection.c:1.323   Sun Nov  2 21:10:10 2008
+++ php-src/ext/reflection/php_reflection.c Fri Nov 14 19:22:09 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.323 2008/11/02 21:10:10 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.324 2008/11/14 19:22:09 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -375,7 +375,11 @@
if (ce-num_interfaces) {
zend_uint i;
 
-   string_printf(str,  implements %v, ce-interfaces[0]-name);
+   if (ce-ce_flags  ZEND_ACC_INTERFACE) {
+   string_printf(str,  extends %v, 
ce-interfaces[0]-name);
+   } else {
+   string_printf(str,  implements %v, 
ce-interfaces[0]-name);
+   }
for (i = 1; i  ce-num_interfaces; ++i) {
string_printf(str, , %v, ce-interfaces[i]-name);
}
@@ -5467,7 +5471,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.323 
2008/11/02 21:10:10 felipe Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.324 
2008/11/14 19:22:09 bjori Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug46064.phpt bug46064_2.phpt

2008-10-29 Thread Felipe Pena
felipe  Wed Oct 29 12:41:22 2008 UTC

  Added files: 
/php-src/ext/reflection/tests   bug46064.phpt bug46064_2.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fixed bug #46064 (Exception when creating ReflectionProperty object on 
dynamicly created property)
  
  http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.320r2=1.321diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.320 
php-src/ext/reflection/php_reflection.c:1.321
--- php-src/ext/reflection/php_reflection.c:1.320   Fri Oct 24 14:34:15 2008
+++ php-src/ext/reflection/php_reflection.c Wed Oct 29 12:41:22 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.320 2008/10/24 14:34:15 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.321 2008/10/29 12:41:22 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1424,6 +1424,9 @@
if (modifiers  (ZEND_ACC_FINAL | ZEND_ACC_FINAL_CLASS)) {
add_next_index_ascii_stringl(return_value, final, 
sizeof(final)-1, 1);
}
+   if (modifiers  ZEND_ACC_IMPLICIT_PUBLIC) {
+   add_next_index_ascii_stringl(return_value, public, 
sizeof(public)-1, 1);
+   }
 
/* These are mutually exclusive */
switch (modifiers  ZEND_ACC_PPP_MASK) {
@@ -3468,7 +3471,8 @@
zend_property_info *property_info;
zstr name, classname;
zstr tmp; 
-   int name_len, classname_len, tmp_len;
+   int name_len, classname_len;
+   unsigned int tmp_len;
zend_uchar name_type;
 
METHOD_NOTSTATIC(reflection_class_ptr);
@@ -3482,6 +3486,20 @@
reflection_property_factory(ce, property_info, 
return_value TSRMLS_CC);
}
return;
+   } else if (intern-obj) {
+   /* Check for dynamic properties */
+   if 
(zend_u_hash_exists(Z_OBJ_HT_P(intern-obj)-get_properties(intern-obj 
TSRMLS_CC), name_type, name, name_len+1)) {
+   zend_property_info property_info_tmp;
+   property_info_tmp.flags = ZEND_ACC_IMPLICIT_PUBLIC;
+   property_info_tmp.name = name;
+   property_info_tmp.name_length = name_len;
+   property_info_tmp.h = zend_u_get_hash_value(name_type, 
name, name_len+1);
+   property_info_tmp.doc_comment = NULL_ZSTR;
+   property_info_tmp.ce = ce;
+
+   reflection_property_factory(ce, property_info_tmp, 
return_value TSRMLS_CC);
+   return;
+   }
}
if ((name_type == IS_UNICODE  (tmp.u = u_strstr(name.u, 
u_doublecolon)) != NULL)
|| (name_type == IS_STRING   (tmp.s =   strstr(name.s, ::)) 
!= NULL))
@@ -4229,12 +4247,12 @@
 {
zval *propname, *classname;
zstr name_str, class_name, prop_name;
-   int name_len;
+   int name_len, dynam_prop = 0;
zval *object;
reflection_object *intern;
zend_class_entry **pce;
zend_class_entry *ce;
-   zend_property_info *property_info;
+   zend_property_info *property_info = NULL;
property_reference *reference;
zend_uchar name_type;
 
@@ -4270,12 +4288,19 @@
}
 
if (zend_u_hash_find(ce-properties_info, name_type, name_str, 
name_len + 1, (void **) property_info) == FAILURE || (property_info-flags  
ZEND_ACC_SHADOW)) {
-   zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, 
-   Property %v::$%R does not exist, ce-name, name_type, 
name_str);
-   return;
+   /* Check for dynamic properties */
+   if (property_info == NULL  Z_TYPE_P(classname) == IS_OBJECT 
 Z_OBJ_HT_P(classname)-get_properties) {
+   if 
(zend_u_hash_exists(Z_OBJ_HT_P(classname)-get_properties(classname TSRMLS_CC), 
name_type, name_str, name_len+1)) {
+   dynam_prop = 1;
+   }
+   }
+   if (dynam_prop == 0) {
+   zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, Property %s::$%v does not exist, ce-name, name_str);
+   return;
+   }
}

-   if (!(property_info-flags  ZEND_ACC_PRIVATE)) {
+   if (dynam_prop == 0  !(property_info-flags  ZEND_ACC_PRIVATE)) {
/* we have to search the class hierarchy for this (implicit) 
public or protected property */
zend_class_entry *tmp_ce = ce;
zend_property_info *tmp_info;
@@ -4291,14 +4316,28 @@
ZVAL_TEXTL(classname, ce-name, ce-name_length, 1);
zend_ascii_hash_update(Z_OBJPROP_P(object), class, sizeof(class), 
(void **) classname, sizeof(zval *), 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-10-29 Thread Felipe Pena
felipe  Wed Oct 29 13:01:44 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fixed char formatter
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.321r2=1.322diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.321 
php-src/ext/reflection/php_reflection.c:1.322
--- php-src/ext/reflection/php_reflection.c:1.321   Wed Oct 29 12:41:22 2008
+++ php-src/ext/reflection/php_reflection.c Wed Oct 29 13:01:44 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.321 2008/10/29 12:41:22 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.322 2008/10/29 13:01:44 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4295,7 +4295,7 @@
}
}
if (dynam_prop == 0) {
-   zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, Property %s::$%v does not exist, ce-name, name_str);
+   zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, Property %v::$%v does not exist, ce-name, name_str);
return;
}
}
@@ -5429,7 +5429,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.321 
2008/10/29 12:41:22 felipe Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.322 
2008/10/29 13:01:44 felipe Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug46205.phpt

2008-10-01 Thread Dmitry Stogov
dmitry  Wed Oct  1 07:30:52 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   bug46205.phpt 
  Log:
  Fixed bug #46205 (Closure - Memory leaks when ReflectionException is thrown)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.318r2=1.319diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.318 
php-src/ext/reflection/php_reflection.c:1.319
--- php-src/ext/reflection/php_reflection.c:1.318   Fri Aug 22 15:51:50 2008
+++ php-src/ext/reflection/php_reflection.c Wed Oct  1 07:30:52 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.318 2008/08/22 15:51:50 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.319 2008/10/01 07:30:52 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2005,6 +2005,12 @@
if (Z_TYPE_PP(parameter) == IS_LONG) {
position= Z_LVAL_PP(parameter);
if (position  0 || (zend_uint)position = 
fptr-common.num_args) {
+   if (fptr-common.fn_flags  ZEND_ACC_CALL_VIA_HANDLER) {
+   if (fptr-type != ZEND_OVERLOADED_FUNCTION) {
+   efree(fptr-common.function_name.v);
+   }
+   efree(fptr);
+   }
_DO_THROW(The parameter specified by its offset could 
not be found);
/* returns out of this function */
}
@@ -2023,6 +2029,12 @@
}
}
if (position == -1) {
+   if (fptr-common.fn_flags  ZEND_ACC_CALL_VIA_HANDLER) {
+   if (fptr-type != ZEND_OVERLOADED_FUNCTION) {
+   efree(fptr-common.function_name.v);
+   }
+   efree(fptr);
+   }
_DO_THROW(The parameter specified by its name could 
not be found);
/* returns out of this function */
}
@@ -5416,7 +5428,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.318 
2008/08/22 15:51:50 felipe Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.319 
2008/10/01 07:30:52 dmitry Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug46205.phpt?r1=1.1r2=1.2diff_format=u
Index: php-src/ext/reflection/tests/bug46205.phpt
diff -u /dev/null php-src/ext/reflection/tests/bug46205.phpt:1.2
--- /dev/null   Wed Oct  1 07:30:52 2008
+++ php-src/ext/reflection/tests/bug46205.phpt  Wed Oct  1 07:30:52 2008
@@ -0,0 +1,14 @@
+--TEST--
+Bug #46205 (Closure - Memory leaks when ReflectionException is thrown)
+--FILE--
+?php
+$x = new reflectionmethod('reflectionparameter', 'export');
+$y = function() { };
+
+try {
+   $x-invokeArgs(new reflectionparameter('trim', 'str'), array($y, 1));
+} catch (Exception $e) { }
+?
+ok
+--EXPECT--
+ok



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/standard basic_functions.c ZendEngine2 zend_compile.c

2008-08-22 Thread Felipe Pena
felipe  Fri Aug 22 15:51:51 2008 UTC

  Modified files:  
/ZendEngine2zend_compile.c 
/php-src/ext/standard   basic_functions.c 
/php-src/ext/reflection php_reflection.c 
  Log:
  - Removed unused arguments
  
  
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_compile.c?r1=1.837r2=1.838diff_format=u
Index: ZendEngine2/zend_compile.c
diff -u ZendEngine2/zend_compile.c:1.837 ZendEngine2/zend_compile.c:1.838
--- ZendEngine2/zend_compile.c:1.837Tue Aug 12 17:15:59 2008
+++ ZendEngine2/zend_compile.c  Fri Aug 22 15:51:50 2008
@@ -17,7 +17,7 @@
+--+
 */
 
-/* $Id: zend_compile.c,v 1.837 2008/08/12 17:15:59 felipe Exp $ */
+/* $Id: zend_compile.c,v 1.838 2008/08/22 15:51:50 felipe Exp $ */
 
 #include zend_language_parser.h
 #include zend.h
@@ -2898,7 +2898,7 @@
zend_update_class_constants(parent_ce  TSRMLS_CC);
zend_hash_apply_with_arguments(CE_STATIC_MEMBERS(parent_ce) 
TSRMLS_CC, (apply_func_args_t)inherit_static_prop, 1, 
ce-default_static_members);
} else {
-   
zend_hash_apply_with_arguments(parent_ce-default_static_members TSRMLS_CC, 
(apply_func_args_t)inherit_static_prop, 1, ce-default_static_members 
TSRMLS_CC);
+   
zend_hash_apply_with_arguments(parent_ce-default_static_members TSRMLS_CC, 
(apply_func_args_t)inherit_static_prop, 1, ce-default_static_members);
}
zend_hash_merge_ex(ce-properties_info, parent_ce-properties_info, 
(copy_ctor_func_t) (ce-type  ZEND_INTERNAL_CLASS ? 
zend_duplicate_property_info_internal : zend_duplicate_property_info), 
sizeof(zend_property_info), (merge_checker_func_t) 
do_inherit_property_access_check, ce);
 
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.927r2=1.928diff_format=u
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.927 
php-src/ext/standard/basic_functions.c:1.928
--- php-src/ext/standard/basic_functions.c:1.927Thu Aug 21 23:37:40 2008
+++ php-src/ext/standard/basic_functions.c  Fri Aug 22 15:51:50 2008
@@ -17,7 +17,7 @@
+--+
  */
 
-/* $Id: basic_functions.c,v 1.927 2008/08/21 23:37:40 pajoye Exp $ */
+/* $Id: basic_functions.c,v 1.928 2008/08/22 15:51:50 felipe Exp $ */
 
 #include php.h
 #include php_streams.h
@@ -4945,7 +4945,7 @@
} else if (Z_TYPE_P(entry) == IS_ARRAY) {
MAKE_STD_ZVAL(tmp);
array_init(tmp);
-   zend_hash_apply_with_arguments(Z_ARRVAL_P(entry) TSRMLS_CC, 
(apply_func_args_t) add_config_entry_cb, 1, tmp TSRMLS_CC);
+   zend_hash_apply_with_arguments(Z_ARRVAL_P(entry) TSRMLS_CC, 
(apply_func_args_t) add_config_entry_cb, 1, tmp);
add_assoc_zval_ex(retval, hash_key-arKey.s, 
hash_key-nKeyLength, tmp);
}
return 0;
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.317r2=1.318diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.317 
php-src/ext/reflection/php_reflection.c:1.318
--- php-src/ext/reflection/php_reflection.c:1.317   Mon Aug 18 19:42:38 2008
+++ php-src/ext/reflection/php_reflection.c Fri Aug 22 15:51:50 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.317 2008/08/18 19:42:38 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.318 2008/08/22 15:51:50 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1035,7 +1035,7 @@
int num_constants = 0;

string_init(str_constants);
-   zend_hash_apply_with_arguments(EG(zend_constants) TSRMLS_CC, 
(apply_func_args_t) _extension_const_string, 4, str_constants, indent, module, 
num_constants TSRMLS_CC);
+   zend_hash_apply_with_arguments(EG(zend_constants) TSRMLS_CC, 
(apply_func_args_t) _extension_const_string, 4, str_constants, indent, module, 
num_constants);
if (num_constants) {
string_printf(str, \n  - Constants [%d] {\n, 
num_constants);
string_append(str, str_constants);
@@ -1072,7 +1072,7 @@
string_init(sub_indent);
string_printf(sub_indent, %s, indent);
string_init(str_classes);
-   zend_hash_apply_with_arguments(EG(class_table) TSRMLS_CC, 
(apply_func_args_t) _extension_class_string, 4, str_classes, 
sub_indent.string, module, num_classes TSRMLS_CC);
+   zend_hash_apply_with_arguments(EG(class_table) TSRMLS_CC, 
(apply_func_args_t) _extension_class_string, 4, str_classes, 
sub_indent.string, module, num_classes);
if (num_classes) {
string_printf(str, \n  - Classes [%d] {, num_classes);

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests ReflectionMethod_invoke_basic.phpt property_exists.phpt

2008-08-18 Thread Felipe Pena
felipe  Mon Aug 18 19:42:39 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   ReflectionMethod_invoke_basic.phpt 
property_exists.phpt 
  Log:
  - MFB: New parameter parsing API
  - Fixed tests
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.316r2=1.317diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.316 
php-src/ext/reflection/php_reflection.c:1.317
--- php-src/ext/reflection/php_reflection.c:1.316   Wed Aug 13 21:57:00 2008
+++ php-src/ext/reflection/php_reflection.c Mon Aug 18 19:42:38 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.316 2008/08/13 21:57:00 pajoye Exp $ */
+/* $Id: php_reflection.c,v 1.317 2008/08/18 19:42:38 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1659,9 +1659,8 @@
 ZEND_METHOD(reflection_function, invoke)
 {
zval *retval_ptr;
-   zval ***params;
-   int result;
-   int argc = ZEND_NUM_ARGS();
+   zval ***params = NULL;
+   int result, num_args = 0;
zend_fcall_info fci;
zend_fcall_info_cache fcc;
reflection_object *intern;
@@ -1670,10 +1669,8 @@
METHOD_NOTSTATIC(reflection_function_ptr);
GET_REFLECTION_OBJECT_PTR(fptr);
 
-   params = safe_emalloc(sizeof(zval **), argc, 0);
-   if (zend_get_parameters_array_ex(argc, params) == FAILURE) {
-   efree(params);
-   RETURN_FALSE;
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, +, params, 
num_args) == FAILURE) {
+   return;
}
 
fci.size = sizeof(fci);
@@ -1682,7 +1679,7 @@
fci.symbol_table = NULL;
fci.object_pp = NULL;
fci.retval_ptr_ptr = retval_ptr;
-   fci.param_count = argc;
+   fci.param_count = num_args;
fci.params = params;
fci.no_separation = 1;
 
@@ -2497,22 +2494,16 @@
 ZEND_METHOD(reflection_method, invoke)
 {
zval *retval_ptr;
-   zval ***params;
+   zval ***params = NULL;
zval **object_pp;
reflection_object *intern;
zend_function *mptr;
-   int argc = ZEND_NUM_ARGS();
-   int result;
+   int result, num_args = 0;
zend_fcall_info fci;
zend_fcall_info_cache fcc;
zend_class_entry *obj_ce;

METHOD_NOTSTATIC(reflection_method_ptr);
-
-   if (argc  1) {
-   zend_error(E_WARNING, Invoke() expects at least one parameter, 
none given);
-   RETURN_FALSE;
-   }

GET_REFLECTION_OBJECT_PTR(mptr);
 
@@ -2533,10 +2524,8 @@
return;
}
 
-   params = safe_emalloc(sizeof(zval **), argc, 0);
-   if (zend_get_parameters_array_ex(argc, params) == FAILURE) {
-   efree(params);
-   RETURN_FALSE;
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, +, params, 
num_args) == FAILURE) {
+   return;
}

/* In case this is a static method, we should'nt pass an object_pp
@@ -2571,7 +2560,7 @@
fci.symbol_table = NULL;
fci.object_pp = object_pp;
fci.retval_ptr_ptr = retval_ptr;
-   fci.param_count = argc-1;
+   fci.param_count = num_args-1;
fci.params = params+1;
fci.no_separation = 1;
 
@@ -3767,14 +3756,14 @@
zval *retval_ptr = NULL;
reflection_object *intern;
zend_class_entry *ce;
-   int argc = ZEND_NUM_ARGS();

METHOD_NOTSTATIC(reflection_class_ptr);
GET_REFLECTION_OBJECT_PTR(ce);
 
/* Run the constructor if there is one */
if (ce-constructor) {
-   zval ***params;
+   zval ***params = NULL;
+   int num_args = 0;
zend_fcall_info fci;
zend_fcall_info_cache fcc;
 
@@ -3783,9 +3772,10 @@
return;
}
 
-   params = safe_emalloc(sizeof(zval **), argc, 0);
-   if (zend_get_parameters_array_ex(argc, params) == FAILURE) {
-   efree(params);
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, *, 
params, num_args) == FAILURE) {
+   if (params) {
+   efree(params);
+   }
RETURN_FALSE;
}
 
@@ -3797,7 +3787,7 @@
fci.symbol_table = NULL;
fci.object_pp = return_value;
fci.retval_ptr_ptr = retval_ptr;
-   fci.param_count = argc;
+   fci.param_count = num_args;
fci.params = params;
fci.no_separation = 1;
 
@@ -3818,7 +3808,10 @@
if (retval_ptr) {
zval_ptr_dtor(retval_ptr);
}

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-08-13 Thread Pierre-Alain Joye
pajoye  Wed Aug 13 21:57:00 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - move declaration on top and fix build error
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.315r2=1.316diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.315 
php-src/ext/reflection/php_reflection.c:1.316
--- php-src/ext/reflection/php_reflection.c:1.315   Mon Aug 11 22:30:44 2008
+++ php-src/ext/reflection/php_reflection.c Wed Aug 13 21:57:00 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.315 2008/08/11 22:30:44 cseiler Exp $ */
+/* $Id: php_reflection.c,v 1.316 2008/08/13 21:57:00 pajoye Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3357,9 +3357,9 @@
zend_function *closure;
 
if (mptr-common.fn_flags  filter) {
-   ALLOC_ZVAL(method);
unsigned int lc_name_len;
zstr lc_name = zend_u_str_case_fold(ZEND_STR_TYPE, 
mptr-common.function_name, len, 1, lc_name_len);
+   ALLOC_ZVAL(method);
if (ce == zend_ce_closure  obj  (lc_name_len == 
sizeof(ZEND_INVOKE_FUNC_NAME)-1)
 ZEND_U_EQUAL(ZEND_STR_TYPE, lc_name, lc_name_len, 
ZEND_INVOKE_FUNC_NAME, sizeof(ZEND_INVOKE_FUNC_NAME)-1)
 (closure = zend_get_closure_invoke_method(obj 
TSRMLS_CC)) != NULL)
@@ -5423,7 +5423,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.315 
2008/08/11 22:30:44 cseiler Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.316 
2008/08/13 21:57:00 pajoye Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests closures_001.phpt closures_002.phpt reflectionParameter_export_error2.phpt

2008-08-11 Thread Marcus Boerger
helly   Mon Aug 11 12:36:01 2008 UTC

  Added files: 
/php-src/ext/reflection/tests   closures_001.phpt closures_002.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   
reflectionParameter_export_error2.phpt 
  Log:
  - Closure/Reflection integration (original idea by Christian Seiler)
  
  http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.310r2=1.311diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.310 
php-src/ext/reflection/php_reflection.c:1.311
--- php-src/ext/reflection/php_reflection.c:1.310   Mon Aug 11 00:46:14 2008
+++ php-src/ext/reflection/php_reflection.c Mon Aug 11 12:36:00 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.310 2008/08/11 00:46:14 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.311 2008/08/11 12:36:00 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -187,11 +187,18 @@
zend_function *fptr;
 } parameter_reference;
 
+typedef enum {
+   REF_TYPE_OTHER,  /* Must be 0 */
+   REF_TYPE_FUNCTION,
+   REF_TYPE_PARAMETER,
+   REF_TYPE_PROPERTY,
+} reflection_type_t;
+
 /* Struct for reflection objects */
 typedef struct {
zend_object zo;
void *ptr;
-   unsigned int free_ptr:1;
+   reflection_type_t ref_type;
zval *obj;
zend_class_entry *ce;
 } reflection_object;
@@ -221,34 +228,45 @@
 }
 /* }}} */
 
-static void reflection_free_objects_storage(void *object TSRMLS_DC) /* {{{ */
+static void _free_function(zend_function *fptr TSRMLS_DC) /* {{{ */
 {
-   reflection_object *intern = (reflection_object *) object;
-
-   if (intern-free_ptr  intern-ptr) {
-   efree(intern-ptr);
-   intern-ptr = NULL;
+   if (fptr
+fptr-type != ZEND_USER_FUNCTION
+(fptr-internal_function.fn_flags  
ZEND_ACC_CALL_VIA_HANDLER) != 0
+   ) {
+   efree(fptr-internal_function.function_name.v);
+   efree(fptr);
}
-   if (intern-obj) {
-   zval_ptr_dtor(intern-obj);
-   }
-   zend_objects_free_object_storage(object TSRMLS_CC);
 }
 /* }}} */
 
-static void reflection_objects_clone(void *object, void **object_clone 
TSRMLS_DC) /* {{{ */
+static void reflection_free_objects_storage(void *object TSRMLS_DC) /* {{{ */
 {
reflection_object *intern = (reflection_object *) object;
-   reflection_object **intern_clone = (reflection_object **) object_clone;
+   parameter_reference *reference;
 
-   *intern_clone = emalloc(sizeof(reflection_object));
-   zend_object_std_init((*intern_clone)-zo, intern-zo.ce TSRMLS_CC);
-   (*intern_clone)-ptr = intern-ptr;
-   (*intern_clone)-free_ptr = intern-free_ptr;
-   (*intern_clone)-obj = intern-obj;
+   if (intern-ptr) {
+   switch (intern-ref_type) {
+   case REF_TYPE_PARAMETER:
+   reference = (parameter_reference*)intern-ptr;
+   _free_function(reference-fptr TSRMLS_CC);
+   efree(intern-ptr);
+   break;
+   case REF_TYPE_FUNCTION:
+   _free_function(intern-ptr TSRMLS_CC);
+   break;
+   case REF_TYPE_PROPERTY:
+   efree(intern-ptr);
+   break;
+   case REF_TYPE_OTHER:
+   break;
+   }
+   }
+   intern-ptr = NULL;
if (intern-obj) {
-   zval_add_ref(intern-obj);
+   zval_ptr_dtor(intern-obj);
}
+   zend_objects_free_object_storage(object TSRMLS_CC);
 }
 /* }}} */
 
@@ -258,14 +276,12 @@
zend_object_value retval;
reflection_object *intern;
 
-   intern = emalloc(sizeof(reflection_object));
-   intern-ptr = NULL;
-   intern-obj = NULL;
-   intern-free_ptr = 0;
+   intern = ecalloc(1, sizeof(reflection_object));
+   intern-zo.ce = class_type;
 
zend_object_std_init(intern-zo, class_type TSRMLS_CC);
zend_hash_copy(intern-zo.properties, class_type-default_properties, 
(copy_ctor_func_t) zval_add_ref, (void *) tmp, sizeof(zval *));
-   retval.handle = zend_objects_store_put(intern, NULL, 
reflection_free_objects_storage, reflection_objects_clone TSRMLS_CC);
+   retval.handle = zend_objects_store_put(intern, NULL, 
reflection_free_objects_storage, NULL TSRMLS_CC);
retval.handlers = reflection_object_handlers;
return retval;
 }
@@ -528,20 +544,34 @@
zstr key;
uint key_len;
ulong num_index;
-   uint 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-08-11 Thread Felipe Pena
felipe  Mon Aug 11 12:45:37 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fix build (ZTS)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.311r2=1.312diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.311 
php-src/ext/reflection/php_reflection.c:1.312
--- php-src/ext/reflection/php_reflection.c:1.311   Mon Aug 11 12:36:00 2008
+++ php-src/ext/reflection/php_reflection.c Mon Aug 11 12:45:37 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.311 2008/08/11 12:36:00 helly Exp $ */
+/* $Id: php_reflection.c,v 1.312 2008/08/11 12:45:37 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3369,7 +3369,7 @@
 
array_init(return_value);
zend_hash_apply_with_arguments(ce-function_table TSRMLS_CC, 
(apply_func_args_t) _addmethod_va, 4, ce, return_value, filter, intern-obj);
-   if (intern-obj  instanceof_function(ce, zend_ce_closure)) {
+   if (intern-obj  instanceof_function(ce, zend_ce_closure TSRMLS_CC)) {
zend_function *closure = 
zend_get_closure_invoke_method(intern-obj TSRMLS_CC);
if (closure) {
_addmethod(closure, ce, return_value, filter, 
intern-obj TSRMLS_CC);
@@ -5377,7 +5377,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.311 
2008/08/11 12:36:00 helly Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.312 
2008/08/11 12:45:37 felipe Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests 024.phpt pecl/sdo/SCA/Bindings/atom .cvsignore Atom1.0.xsd AtomDas.php Proxy.php RequestTester.php SCA_AtomServer.php SC

2008-08-11 Thread Felipe Pena
felipe  Mon Aug 11 13:35:49 2008 UTC

  Removed files:   
/pecl/sdo/SCA/Bindings/atom AtomDas.php Atom1.0.xsd 
ServiceRequestHandler.php 
SCA_AtomServer.php RequestTester.php 
.cvsignore xml.xsd 
SCA_ServiceWrapperAtom.php 
xhtml1-strict.xsd Proxy.php 

  Modified files:  
/pecl/sdo/SCA/Bindings/atom binding 
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   024.phpt 
  Log:
  - Fixed wrong check for dynamic properties
  
  
http://cvs.php.net/viewvc.cgi/pecl/sdo/SCA/Bindings/atom/binding?r1=r2=diff_format=u
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.312r2=1.313diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.312 
php-src/ext/reflection/php_reflection.c:1.313
--- php-src/ext/reflection/php_reflection.c:1.312   Mon Aug 11 12:45:37 2008
+++ php-src/ext/reflection/php_reflection.c Mon Aug 11 13:35:48 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.312 2008/08/11 12:45:37 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.313 2008/08/11 13:35:48 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -509,9 +509,8 @@
ulong index;
 
if ((prop_type = 
zend_hash_get_current_key_ex(properties, prop_name, prop_name_size, index, 
0, pos)) == (UG(unicode)?HASH_KEY_IS_UNICODE:HASH_KEY_IS_STRING)) {
-   if (prop_name_size  
(UG(unicode)?prop_name.u[0]:prop_name.s[0])) {
-   /* skip all private and protected 
properties */
-   if 
(zend_u_hash_exists(ce-properties_info, prop_type, prop_name, 
prop_name_size)) {
+   if (prop_name_size  
(UG(unicode)?prop_name.u[0]:prop_name.s[0])) { /* skip all private and 
protected properties */
+   if 
(!zend_u_hash_exists(ce-properties_info, prop_type, prop_name, 
prop_name_size)) {
count++;
_property_string(dyn, NULL, 
prop_name, sub_indent.string TSRMLS_CC);   
}
@@ -5377,7 +5376,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.312 
2008/08/11 12:45:37 felipe Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.313 
2008/08/11 13:35:48 felipe Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/024.phpt?r1=1.2r2=1.3diff_format=u
Index: php-src/ext/reflection/tests/024.phpt
diff -u php-src/ext/reflection/tests/024.phpt:1.2 
php-src/ext/reflection/tests/024.phpt:1.3
--- php-src/ext/reflection/tests/024.phpt:1.2   Thu Apr 12 12:43:54 2007
+++ php-src/ext/reflection/tests/024.phpt   Mon Aug 11 13:35:49 2008
@@ -9,7 +9,12 @@
protected $p2 = 2;
public$p3 = 3;
 }
-$obj = new ReflectionObject(new C1());
+
+$x = new C1();
+$x-z = 4;
+$x-p3 = 5;
+
+$obj = new ReflectionObject($x);
 echo $obj;
 ?
 --EXPECTF--
@@ -32,7 +37,7 @@
   }
 
   - Dynamic properties [1] {
-Property [ dynamic public $p3 ]
+Property [ dynamic public $z ]
   }
 
   - Methods [0] {



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



Re: [PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests 024.phpt pecl/sdo/SCA/Bindings/atom .cvsignore Atom1.0.xsd AtomDas.php Proxy.php RequestTester.php SCA_AtomServer.php

2008-08-11 Thread hannes . magnusson
On 11/08/2008, Felipe Pena [EMAIL PROTECTED] wrote:
 felipeMon Aug 11 13:35:49 2008 UTC

   Removed files:
 /pecl/sdo/SCA/Bindings/atom   AtomDas.php Atom1.0.xsd
   ServiceRequestHandler.php
   SCA_AtomServer.php RequestTester.php
   .cvsignore xml.xsd
   SCA_ServiceWrapperAtom.php
   xhtml1-strict.xsd Proxy.php

   Modified files:
 /pecl/sdo/SCA/Bindings/atom   binding

Soo.. this looks confusing...?

I can't see any changes being made (or files removed for that matter)
browsing viewvc.. and I thought this dir (along with all other IBM
projects) were CLAd and therefore with explicit unavail lines?

-Hannes

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-08-11 Thread Marcus Boerger
helly   Mon Aug 11 19:34:49 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Cleanup
  http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.313r2=1.314diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.313 
php-src/ext/reflection/php_reflection.c:1.314
--- php-src/ext/reflection/php_reflection.c:1.313   Mon Aug 11 13:35:48 2008
+++ php-src/ext/reflection/php_reflection.c Mon Aug 11 19:34:49 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.313 2008/08/11 13:35:48 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.314 2008/08/11 19:34:49 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -232,8 +232,8 @@
 {
if (fptr
 fptr-type != ZEND_USER_FUNCTION
-(fptr-internal_function.fn_flags  
ZEND_ACC_CALL_VIA_HANDLER) != 0
-   ) {
+(fptr-internal_function.fn_flags  
ZEND_ACC_CALL_VIA_HANDLER) != 0)
+   {
efree(fptr-internal_function.function_name.v);
efree(fptr);
}
@@ -363,7 +363,7 @@
/* The information where a class is declared is only available for user 
classes */
if (ce-type == ZEND_USER_CLASS) {
string_printf(str, %s  @@ %s %d-%d\n, indent, ce-filename,
- ce-line_start, ce-line_end);
+   ce-line_start, ce-line_end);
}
 
/* Constants */
@@ -442,7 +442,8 @@
 
while 
(zend_hash_get_current_data_ex(ce-function_table, (void **) mptr, pos) == 
SUCCESS) {
if (mptr-common.fn_flags  ZEND_ACC_STATIC
-((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce)) {
+((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce))
+   {
count_static_funcs++;
}
zend_hash_move_forward_ex(ce-function_table, 
pos);
@@ -459,7 +460,8 @@
 
while 
(zend_hash_get_current_data_ex(ce-function_table, (void **) mptr, pos) == 
SUCCESS) {
if (mptr-common.fn_flags  ZEND_ACC_STATIC
-((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce)) {
+((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce))
+   {
string_printf(str, \n);
_function_string(str, mptr, ce, 
sub_indent.string TSRMLS_CC);
}
@@ -538,8 +540,9 @@

zend_hash_internal_pointer_reset_ex(ce-function_table, pos);
 
while 
(zend_hash_get_current_data_ex(ce-function_table, (void **) mptr, pos) == 
SUCCESS) {
-   if ((mptr-common.fn_flags  ZEND_ACC_STATIC) 
== 0 
-   ((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce)) {
+   if ((mptr-common.fn_flags  ZEND_ACC_STATIC) 
== 0
+((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce))
+   {
zstr key;
uint key_len;
ulong num_index;
@@ -547,19 +550,19 @@
zstr lcname = 
zend_u_str_case_fold(ZEND_STR_TYPE, mptr-common.function_name, len, 1, 
lcname_len);
 
/* Do not display old-style inherited 
constructors */
-   if ((mptr-common.fn_flags  
ZEND_ACC_CTOR) == 0 ||
-   mptr-common.scope == ce ||
-   
zend_hash_get_current_key_ex(ce-function_table, key, key_len, num_index, 
0, pos) != (UG(unicode)?HASH_KEY_IS_UNICODE:HASH_KEY_IS_STRING) ||
-   (UG(unicode)
-? zend_u_binary_strcmp(key.u, 
key_len-1, lcname.u, lcname_len) == 0
-: zend_binary_strcmp(key.s, 
key_len-1, lcname.s, lcname_len) == 0)
-   ) {
+   if ((mptr-common.fn_flags  
ZEND_ACC_CTOR) == 0
+   || mptr-common.scope == ce
+   || 

Re: [PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests 024.phpt pecl/sdo/SCA/Bindings/atom .cvsignore Atom1.0.xsd AtomDas.php Proxy.php RequestTester.php SCA_AtomServer.php

2008-08-11 Thread Steph Fox

I can't see any changes being made (or files removed for that matter)
browsing viewvc.. and I thought this dir (along with all other IBM
projects) were CLAd and therefore with explicit unavail lines?


It is. It's also not a development branch - it's the release-only branch!

Best write a nice letter to Caroline :) (cem@)

- Steph


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



Re: [PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests 024.phpt pecl/sdo/SCA/Bindings/atom .cvsignore Atom1.0.xsd AtomDas.php Proxy.php RequestTester.php SCA_AtomServer.php

2008-08-11 Thread Felipe Pena
Em Seg, 2008-08-11 às 21:24 +0200, [EMAIL PROTECTED] escreveu:
 On 11/08/2008, Felipe Pena [EMAIL PROTECTED] wrote:
  felipe  Mon Aug 11 13:35:49 2008 UTC
 
Removed files:
  /pecl/sdo/SCA/Bindings/atom AtomDas.php Atom1.0.xsd
  ServiceRequestHandler.php
  SCA_AtomServer.php RequestTester.php
  .cvsignore xml.xsd
  SCA_ServiceWrapperAtom.php
  xhtml1-strict.xsd Proxy.php
 
Modified files:
  /pecl/sdo/SCA/Bindings/atom binding
 
 Soo.. this looks confusing...?
 
 I can't see any changes being made (or files removed for that matter)
 browsing viewvc.. and I thought this dir (along with all other IBM
 projects) were CLAd and therefore with explicit unavail lines?
 
Yeah, That also occured to Tony times ago.

I received the warnings when commiting:
Use of uninitialized value in string eq
at /repository/CVSROOT/loginfo.pl line 127, FC line 1.
Use of uninitialized value in string eq
at /repository/CVSROOT/loginfo.pl line 127, FC line 1.
Use of uninitialized value in concatenation (.) or string
at /repository/CVSROOT/loginfo.pl line 152.
Use of uninitialized value in concatenation (.) or string
at /repository/CVSROOT/loginfo.pl line 152.
Use of uninitialized value in concatenation (.) or string
at /repository/CVSROOT/loginfo.pl line 153.
Use of uninitialized value in concatenation (.) or string
at /repository/CVSROOT/loginfo.pl line 153.
cvs rdiff: cannot find module `pecl/sdo/SCA/Bindings/atom/binding' -
ignored
46398 Mailing the commit email to php-cvs@lists.php.net

-- 
Regards,
Felipe Pena.


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



Re: [PHP-CVS] cvs: php-src /ext/reflection php_reflection.c/ext/reflection/tests 024.phpt pecl/sdo/SCA/Bindings/atom .cvsignoreAtom1.0.xsd AtomDas.php Proxy.php RequestTester.php SCA_AtomServer.phpSCA

2008-08-11 Thread Steph Fox

I received the warnings when commiting:


Ohh. It's supposed to just fail...

- Steph

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests closures_003.phpt closures_004.phpt reflectionParameter_invalidMethodInConstructor.phpt

2008-08-11 Thread Christian Seiler
cseiler Mon Aug 11 22:30:44 2008 UTC

  Added files: 
/php-src/ext/reflection/tests   closures_003.phpt closures_004.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   

reflectionParameter_invalidMethodInConstructor.phpt 
  Log:
   - Fixed sefaults (tests added)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.314r2=1.315diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.314 
php-src/ext/reflection/php_reflection.c:1.315
--- php-src/ext/reflection/php_reflection.c:1.314   Mon Aug 11 19:34:49 2008
+++ php-src/ext/reflection/php_reflection.c Mon Aug 11 22:30:44 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.314 2008/08/11 19:34:49 helly Exp $ */
+/* $Id: php_reflection.c,v 1.315 2008/08/11 22:30:44 cseiler Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -228,6 +228,28 @@
 }
 /* }}} */
 
+static zend_function *_copy_function(zend_function *fptr TSRMLS_DC) /* {{{ */
+{
+   if (fptr
+fptr-type == ZEND_INTERNAL_FUNCTION
+(fptr-internal_function.fn_flags  
ZEND_ACC_CALL_VIA_HANDLER) != 0)
+   {
+   zend_function *copy_fptr;
+   copy_fptr = emalloc(sizeof(zend_function));
+   memcpy(copy_fptr, fptr, sizeof(zend_function));
+   if (UG(unicode)) {
+   copy_fptr-internal_function.function_name.u = 
eustrdup(fptr-internal_function.function_name.u);
+   } else {
+   copy_fptr-internal_function.function_name.s = 
estrdup(fptr-internal_function.function_name.s);
+   }
+   return copy_fptr;
+   } else {
+   /* no copy needed */
+   return fptr;
+   }
+}
+/* }}} */
+
 static void _free_function(zend_function *fptr TSRMLS_DC) /* {{{ */
 {
if (fptr
@@ -1812,7 +1834,7 @@
zval *parameter;   
 
ALLOC_ZVAL(parameter);
-   reflection_parameter_factory(fptr, arg_info, i, 
fptr-common.required_num_args, parameter TSRMLS_CC);
+   reflection_parameter_factory(_copy_function(fptr TSRMLS_CC), 
arg_info, i, fptr-common.required_num_args, parameter TSRMLS_CC);
add_next_index_zval(return_value, parameter);
 
arg_info++;
@@ -1956,7 +1978,7 @@
} else if 
(zend_u_hash_find(ce-function_table, Z_TYPE_PP(method), lcname, lcname_len + 
1, (void **) fptr) == FAILURE) {
efree(lcname.v);

zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, 
-   Method %R::%R() does not 
exist, Z_TYPE_PP(classref), Z_UNIVAL_PP(classref), Z_TYPE_PP(method), 
Z_UNIVAL_PP(method));
+   Method %v::%R() does not 
exist, ce-name, Z_TYPE_PP(method), Z_UNIVAL_PP(method));
return;
}
efree(lcname.v);
@@ -2064,9 +2086,9 @@
GET_REFLECTION_OBJECT_PTR(param);
 
if (!param-fptr-common.scope) {
-   reflection_function_factory(param-fptr, return_value 
TSRMLS_CC);
+   reflection_function_factory(_copy_function(param-fptr 
TSRMLS_CC), return_value TSRMLS_CC);
} else {
-   reflection_method_factory(param-fptr-common.scope, 
param-fptr, return_value TSRMLS_CC);
+   reflection_method_factory(param-fptr-common.scope, 
_copy_function(param-fptr TSRMLS_CC), return_value TSRMLS_CC);
}
 }
 /* }}} */
@@ -2458,7 +2480,14 @@
/* Returns from this function */
}
 
-   zend_create_closure(return_value, mptr, mptr-common.scope, obj 
TSRMLS_CC);
+   /* This is an original closure object and __invoke is to be 
called. */
+   if (Z_OBJCE_P(obj) == zend_ce_closure  mptr-type == 
ZEND_INTERNAL_FUNCTION 
+   (mptr-internal_function.fn_flags  
ZEND_ACC_CALL_VIA_HANDLER) != 0)
+   {
+   RETURN_ZVAL(obj, 1, 0);
+   } else {
+   zend_create_closure(return_value, mptr, 
mptr-common.scope, obj TSRMLS_CC);
+   }
}
 }
 /* }}} */
@@ -5394,7 +5423,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.314 
2008/08/11 19:34:49 helly Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.315 
2008/08/11 22:30:44 cseiler Exp $);
 
php_info_print_table_end();
 } /* }}} */

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug45765.phpt

2008-08-10 Thread Felipe Pena
felipe  Mon Aug 11 00:46:14 2008 UTC

  Added files: 
/php-src/ext/reflection/tests   bug45765.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fixed bug #45765 (ReflectionObject with default parameters of self::xxx 
cause an error)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.309r2=1.310diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.309 
php-src/ext/reflection/php_reflection.c:1.310
--- php-src/ext/reflection/php_reflection.c:1.309   Fri Aug  8 10:53:39 2008
+++ php-src/ext/reflection/php_reflection.c Mon Aug 11 00:46:14 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.309 2008/08/08 10:53:39 felixdv Exp $ */
+/* $Id: php_reflection.c,v 1.310 2008/08/11 00:46:14 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -644,7 +644,7 @@
*zv = precv-op2.u.constant;
zval_copy_ctor(zv);
INIT_PZVAL(zv);
-   zval_update_constant(zv, (void*)1 TSRMLS_CC);
+   zval_update_constant_ex(zv, (void*)1, 
fptr-common.scope TSRMLS_CC);
if (Z_TYPE_P(zv) == IS_BOOL) {
if (Z_LVAL_P(zv)) {
string_write(str, true, 
sizeof(true)-1);
@@ -5262,7 +5262,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.309 
2008/08/08 10:53:39 felixdv Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.310 
2008/08/11 00:46:14 felipe Exp $);
 
php_info_print_table_end();
 } /* }}} */

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug45765.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/bug45765.phpt
+++ php-src/ext/reflection/tests/bug45765.phpt
--TEST--
Fixed bug #45765 (ReflectionObject with default parameters of self::xxx cause 
an error)
--FILE--
?php

class foo2 {
const BAR = 'foobar';
}

class foo extends foo2 {
const BAR = foo's bar;

function test($a = self::BAR) {
}

function test2($a = parent::BAR) {
}

function test3($a = foo::BAR) {
}

function test4($a = foo2::BAR) {
}
}

ReflectionObject::export(new foo);

?
--EXPECTF--
Object of class [ user class foo extends foo2 ] {
  @@ %s 7-21

  - Constants [1] {
Constant [ Unicode string BAR ] { foo's bar }
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [0] {
  }

  - Dynamic properties [0] {
  }

  - Methods [4] {
Method [ user public method test ] {
  @@ %s 10 - 11

  - Parameters [1] {
Parameter #0 [ optional $a = 'foo's bar' ]
  }
}

Method [ user public method test2 ] {
  @@ %s 13 - 14

  - Parameters [1] {
Parameter #0 [ optional $a = 'foobar' ]
  }
}

Method [ user public method test3 ] {
  @@ %s 16 - 17

  - Parameters [1] {
Parameter #0 [ optional $a = 'foo's bar' ]
  }
}

Method [ user public method test4 ] {
  @@ %s 19 - 20

  - Parameters [1] {
Parameter #0 [ optional $a = 'foobar' ]
  }
}
  }
}



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-08-08 Thread Felix De Vliegher
felixdv Fri Aug  8 10:53:39 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  MFB: Documentation fix for getClosure()
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.308r2=1.309diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.308 
php-src/ext/reflection/php_reflection.c:1.309
--- php-src/ext/reflection/php_reflection.c:1.308   Tue Jul 29 08:48:16 2008
+++ php-src/ext/reflection/php_reflection.c Fri Aug  8 10:53:39 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.308 2008/07/29 08:48:16 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.309 2008/08/08 10:53:39 felixdv Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1589,7 +1589,7 @@
 /* }}} */
 
 /* {{{ proto public mixed ReflectionFunction::getClosure()
-   Invokes the function */
+   Returns a dynamically created closure for the function */
 ZEND_METHOD(reflection_function, getClosure)
 {
reflection_object *intern;
@@ -5262,7 +5262,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.308 
2008/07/29 08:48:16 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.309 
2008/08/08 10:53:39 felixdv Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-07-29 Thread Antony Dovgal
tony2001Tue Jul 29 07:29:22 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  add TSRMLS_DC and fix crash in ZTS mode
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.304r2=1.305diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.304 
php-src/ext/reflection/php_reflection.c:1.305
--- php-src/ext/reflection/php_reflection.c:1.304   Sat Jul 26 13:14:56 2008
+++ php-src/ext/reflection/php_reflection.c Tue Jul 29 07:29:22 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.304 2008/07/26 13:14:56 dmitry Exp $ */
+/* $Id: php_reflection.c,v 1.305 2008/07/29 07:29:22 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4565,15 +4565,13 @@
 }
 /* }}} */
 
-static int _addconstant(zend_constant *constant, int num_args, va_list args, 
zend_hash_key *hash_key) /* {{{ */
+static int _addconstant(zend_constant *constant TSRMLS_DC, int num_args, 
va_list args, zend_hash_key *hash_key) /* {{{ */
 {
zval *const_val;
zval *retval = va_arg(args, zval*);
int number = va_arg(args, int);
 
if (number == constant-module_number) {
-   TSRMLS_FETCH();
-
ALLOC_ZVAL(const_val);
*const_val = constant-value;
zval_copy_ctor(const_val);
@@ -5259,7 +5257,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.304 
2008/07/26 13:14:56 dmitry Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.305 
2008/07/29 07:29:22 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-07-29 Thread Antony Dovgal
tony2001Tue Jul 29 07:32:52 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  more similar fixes
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.305r2=1.306diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.305 
php-src/ext/reflection/php_reflection.c:1.306
--- php-src/ext/reflection/php_reflection.c:1.305   Tue Jul 29 07:29:22 2008
+++ php-src/ext/reflection/php_reflection.c Tue Jul 29 07:32:52 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.305 2008/07/29 07:29:22 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.306 2008/07/29 07:32:52 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -850,7 +850,7 @@
 }
 /* }}} */
 
-static int _extension_ini_string(zend_ini_entry *ini_entry, int num_args, 
va_list args, zend_hash_key *hash_key) /* {{{ */
+static int _extension_ini_string(zend_ini_entry *ini_entry TSRMLS_DC, int 
num_args, va_list args, zend_hash_key *hash_key) /* {{{ */
 {
string *str = va_arg(args, string *);
char *indent = va_arg(args, char *);
@@ -886,7 +886,7 @@
 }
 /* }}} */
 
-static int _extension_class_string(zend_class_entry **pce, int num_args, 
va_list args, zend_hash_key *hash_key) /* {{{ */
+static int _extension_class_string(zend_class_entry **pce TSRMLS_DC, int 
num_args, va_list args, zend_hash_key *hash_key) /* {{{ */
 {
string *str = va_arg(args, string *);
char *indent = va_arg(args, char *);
@@ -5257,7 +5257,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.305 
2008/07/29 07:29:22 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.306 
2008/07/29 07:32:52 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-07-29 Thread Antony Dovgal
tony2001Tue Jul 29 07:33:58 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  no need for FETCH anymore..
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.306r2=1.307diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.306 
php-src/ext/reflection/php_reflection.c:1.307
--- php-src/ext/reflection/php_reflection.c:1.306   Tue Jul 29 07:32:52 2008
+++ php-src/ext/reflection/php_reflection.c Tue Jul 29 07:33:58 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.306 2008/07/29 07:32:52 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.307 2008/07/29 07:33:58 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -892,7 +892,6 @@
char *indent = va_arg(args, char *);
struct _zend_module_entry *module = va_arg(args, struct 
_zend_module_entry*);
int *num_classes = va_arg(args, int*);
-   TSRMLS_FETCH();
 
if ((*pce)-module  !strcasecmp((*pce)-module-name, module-name)) {
string_printf(str, \n);
@@ -4604,8 +4603,6 @@
int number = va_arg(args, int);
 
if (number == ini_entry-module_number) {
-   TSRMLS_FETCH();
-
if (ini_entry-value) {
add_ascii_assoc_rt_stringl(retval, ini_entry-name, 
ini_entry-value, ini_entry-value_length, 1);
} else {
@@ -5257,7 +5254,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.306 
2008/07/29 07:32:52 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.307 
2008/07/29 07:33:58 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-07-29 Thread Antony Dovgal
tony2001Tue Jul 29 08:48:16 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  make ReflectionProperty::getValue() and ReflectionProperty::setValue() 
consistent with their implementations in 5_3
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.307r2=1.308diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.307 
php-src/ext/reflection/php_reflection.c:1.308
--- php-src/ext/reflection/php_reflection.c:1.307   Tue Jul 29 07:33:58 2008
+++ php-src/ext/reflection/php_reflection.c Tue Jul 29 08:48:16 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.307 2008/07/29 07:33:58 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.308 2008/07/29 08:48:16 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4267,7 +4267,7 @@
reflection_object *intern;
property_reference *ref;
zval *object, name;
-   zval **member= NULL;
+   zval **member= NULL, *member_p;
zend_uchar utype = UG(unicode)?IS_UNICODE:IS_STRING;
 
METHOD_NOTSTATIC(reflection_property_ptr);
@@ -4287,19 +4287,27 @@
zend_error(E_ERROR, Internal error: Could not find the 
property %v::%v, intern-ce-name, ref-prop.name);
/* Bails out */
}
+   *return_value= **member;
+   zval_copy_ctor(return_value);
+   INIT_PZVAL(return_value);
} else {
+   zstr class_name, prop_name;
+   int prop_name_len;
+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, o, 
object) == FAILURE) {
return;
}
-   if (zend_u_hash_quick_find(Z_OBJPROP_P(object), utype, 
ref-prop.name, ref-prop.name_length + 1, ref-prop.h, (void **) member) == 
FAILURE) {
-   zend_error(E_ERROR, Internal error: Could not find the 
property %v::%v, intern-ce-name, ref-prop.name);
-   /* Bails out */
+   zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, 
ref-prop.name, ref-prop.name_length, class_name, prop_name);
+   prop_name_len = UG(unicode) ? u_strlen(prop_name.u) : 
strlen(prop_name.s);
+   member_p = zend_u_read_property(Z_OBJCE_P(object), object, 
UG(unicode)?IS_UNICODE:IS_STRING, prop_name, prop_name_len, 1 TSRMLS_CC);
+   *return_value= *member_p;
+   zval_copy_ctor(return_value);
+   INIT_PZVAL(return_value);
+   if (member_p != EG(uninitialized_zval_ptr)) {
+   zval_add_ref(member_p);
+   zval_ptr_dtor(member_p);
}
}
-
-   *return_value= **member;
-   zval_copy_ctor(return_value);
-   INIT_PZVAL(return_value);
 }
 /* }}} */
 
@@ -4336,38 +4344,38 @@
}
zend_update_class_constants(intern-ce TSRMLS_CC);
prop_table = CE_STATIC_MEMBERS(intern-ce);
-   } else {
-   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, oz, 
object, value) == FAILURE) {
-   return;
-   }
-   prop_table = Z_OBJPROP_P(object);
-   }
 
-   if (zend_u_hash_quick_find(prop_table, utype, ref-prop.name, 
ref-prop.name_length + 1, ref-prop.h, (void **) variable_ptr) == FAILURE) {
-   zend_error(E_ERROR, Internal error: Could not find the 
property %v::%v, intern-ce-name, ref-prop.name);
-   /* Bails out */
-   }
-   if (*variable_ptr == value) {
-   setter_done = 1;
-   } else {
-   if (PZVAL_IS_REF(*variable_ptr)) {
-   zval_dtor(*variable_ptr);
-   (*variable_ptr)-type = value-type;
-   (*variable_ptr)-value = value-value;
-   if (Z_REFCOUNT_P(value)  0) {
-   zval_copy_ctor(*variable_ptr);
-   }
+   if (zend_u_hash_quick_find(prop_table, utype, ref-prop.name, 
ref-prop.name_length + 1, ref-prop.h, (void **) variable_ptr) == FAILURE) {
+   zend_error(E_ERROR, Internal error: Could not find the 
property %v::%v, intern-ce-name, ref-prop.name);
+   /* Bails out */
+   }
+   if (*variable_ptr == value) {
setter_done = 1;
+   } else {
+   if (PZVAL_IS_REF(*variable_ptr)) {
+   zval_dtor(*variable_ptr);
+   (*variable_ptr)-type = value-type;
+   (*variable_ptr)-value = value-value;
+   if (Z_REFCOUNT_P(value)  0) {
+   zval_copy_ctor(*variable_ptr);
+  

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-07-20 Thread Felipe Pena
felipe  Sun Jul 20 17:02:06 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - MFB: Fixed bug #45571 (ReflectionClass::export() shows superclasses' 
private static methods.)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.299r2=1.300diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.299 
php-src/ext/reflection/php_reflection.c:1.300
--- php-src/ext/reflection/php_reflection.c:1.299   Tue Jul  8 07:05:04 2008
+++ php-src/ext/reflection/php_reflection.c Sun Jul 20 17:02:05 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.299 2008/07/08 07:05:04 dmitry Exp $ */
+/* $Id: php_reflection.c,v 1.300 2008/07/20 17:02:05 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -416,7 +416,7 @@

/* Static methods */
if (ce-function_table) {
-   /* counting static properties */
+   /* counting static methods */   
count = zend_hash_num_elements(ce-function_table);
if (count  0) {
HashPosition pos;
@@ -425,14 +425,15 @@

zend_hash_internal_pointer_reset_ex(ce-function_table, pos);
 
while 
(zend_hash_get_current_data_ex(ce-function_table, (void **) mptr, pos) == 
SUCCESS) {
-   if (mptr-common.fn_flags  ZEND_ACC_STATIC) {
+   if (mptr-common.fn_flags  ZEND_ACC_STATIC
+((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce)) {
count_static_funcs++;
}
zend_hash_move_forward_ex(ce-function_table, 
pos);
}
}
 
-   /* static properties */ 
+   /* static methods */
string_printf(str, \n%s  - Static methods [%d] {, indent, 
count_static_funcs);
if (count_static_funcs  0) {
HashPosition pos;
@@ -441,7 +442,8 @@

zend_hash_internal_pointer_reset_ex(ce-function_table, pos);
 
while 
(zend_hash_get_current_data_ex(ce-function_table, (void **) mptr, pos) == 
SUCCESS) {
-   if (mptr-common.fn_flags  ZEND_ACC_STATIC) {
+   if (mptr-common.fn_flags  ZEND_ACC_STATIC
+((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce)) {
string_printf(str, \n);
_function_string(str, mptr, ce, 
sub_indent.string TSRMLS_CC);
}
@@ -5255,7 +5257,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.299 
2008/07/08 07:05:04 dmitry Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.300 
2008/07/20 17:02:05 felipe Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-06-27 Thread Dmitry Stogov
dmitry  Fri Jun 27 06:43:39 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  ws
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.297r2=1.298diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.297 
php-src/ext/reflection/php_reflection.c:1.298
--- php-src/ext/reflection/php_reflection.c:1.297   Wed Jun 25 12:34:14 2008
+++ php-src/ext/reflection/php_reflection.c Fri Jun 27 06:43:38 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.297 2008/06/25 12:34:14 dmitry Exp $ */
+/* $Id: php_reflection.c,v 1.298 2008/06/27 06:43:38 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2615,7 +2615,7 @@
(colon.u = u_memrchr(Z_USTRVAL_PP(name), ':', Z_USTRLEN_PP(name))) 

colon.u  Z_USTRVAL_PP(name)  *(colon.u-1) == ':') {
RETURN_TRUE;
-}
+   }
RETURN_FALSE;
 }
 /* }}} */
@@ -2639,7 +2639,7 @@
(colon.u = u_memrchr(Z_USTRVAL_PP(name), ':', Z_USTRLEN_PP(name))) 

colon.u  Z_USTRVAL_PP(name)  *(colon.u-1) == ':') {
RETURN_UNICODEL(Z_USTRVAL_PP(name), colon.u - 
Z_USTRVAL_PP(name) - 1, 1);
-}
+   }
RETURN_EMPTY_TEXT();
 }
 /* }}} */
@@ -2663,8 +2663,8 @@
(colon.u = u_memrchr(Z_USTRVAL_PP(name), ':', Z_USTRLEN_PP(name))) 

colon.u  Z_USTRVAL_PP(name)  *(colon.u-1) == ':') {
RETURN_UNICODEL(colon.u + 1, Z_USTRLEN_PP(name) - (colon.u - 
Z_USTRVAL_PP(name) + 1), 1);
-}
-RETURN_ZVAL(*name, 1, 0);
+   }
+   RETURN_ZVAL(*name, 1, 0);
 }
 /* }}} */
 
@@ -5210,7 +5210,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.297 
2008/06/25 12:34:14 dmitry Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.298 
2008/06/27 06:43:38 dmitry Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests ReflectionFunction_getNamespaceName.phpt reflectionClass_getNamespaceName.phpt

2008-06-25 Thread Dmitry Stogov
dmitry  Wed Jun 25 12:34:14 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   

ReflectionFunction_getNamespaceName.phpt 
reflectionClass_getNamespaceName.phpt 
  Log:
  Added support for namespaces
  
  http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.296r2=1.297diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.296 
php-src/ext/reflection/php_reflection.c:1.297
--- php-src/ext/reflection/php_reflection.c:1.296   Sun Jun  1 03:13:54 2008
+++ php-src/ext/reflection/php_reflection.c Wed Jun 25 12:34:14 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.296 2008/06/01 03:13:54 felipe Exp $ */
+/* $Id: php_reflection.c,v 1.297 2008/06/25 12:34:14 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2596,6 +2596,78 @@
 }
 /* }}} */
 
+/* {{{ proto public bool ReflectionFunction::inNamespace()
+   Returns whether this function is defined in namespace */
+ZEND_METHOD(reflection_function, inNamespace)
+{
+   zval **name;
+   zstr colon;
+
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
+   if (zend_hash_find(Z_OBJPROP_P(getThis()), name, sizeof(name), 
(void **) name) == FAILURE) {
+   RETURN_FALSE;
+   }
+   if (Z_TYPE_PP(name) == IS_STRING 
+   (colon.s = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name))) 

+   colon.s  Z_STRVAL_PP(name)  *(colon.s-1) == ':') {
+   RETURN_TRUE;
+   } else if (Z_TYPE_PP(name) == IS_UNICODE 
+   (colon.u = u_memrchr(Z_USTRVAL_PP(name), ':', Z_USTRLEN_PP(name))) 

+   colon.u  Z_USTRVAL_PP(name)  *(colon.u-1) == ':') {
+   RETURN_TRUE;
+}
+   RETURN_FALSE;
+}
+/* }}} */
+
+/* {{{ proto public string ReflectionFunction::getNamespaceName()
+   Returns the name of namespace where this function is defined */
+ZEND_METHOD(reflection_function, getNamespaceName)
+{
+   zval **name;
+   zstr colon;
+
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
+   if (zend_hash_find(Z_OBJPROP_P(getThis()), name, sizeof(name), 
(void **) name) == FAILURE) {
+   RETURN_FALSE;
+   }
+   if (Z_TYPE_PP(name) == IS_STRING 
+   (colon.s = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name))) 

+   colon.s  Z_STRVAL_PP(name)  *(colon.s-1) == ':') {
+   RETURN_STRINGL(Z_STRVAL_PP(name), colon.s - Z_STRVAL_PP(name) - 
1, 1);
+   } else if (Z_TYPE_PP(name) == IS_UNICODE 
+   (colon.u = u_memrchr(Z_USTRVAL_PP(name), ':', Z_USTRLEN_PP(name))) 

+   colon.u  Z_USTRVAL_PP(name)  *(colon.u-1) == ':') {
+   RETURN_UNICODEL(Z_USTRVAL_PP(name), colon.u - 
Z_USTRVAL_PP(name) - 1, 1);
+}
+   RETURN_EMPTY_TEXT();
+}
+/* }}} */
+
+/* {{{ proto public string ReflectionFunction::getShortName()
+   Returns the short name of the function (without namespace part) */
+ZEND_METHOD(reflection_function, getShortName)
+{
+   zval **name;
+   zstr colon;
+
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
+   if (zend_hash_find(Z_OBJPROP_P(getThis()), name, sizeof(name), 
(void **) name) == FAILURE) {
+   RETURN_FALSE;
+   }
+   if (Z_TYPE_PP(name) == IS_STRING 
+   (colon.s = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name))) 

+   colon.s  Z_STRVAL_PP(name)  *(colon.s-1) == ':') {
+   RETURN_STRINGL(colon.s + 1, Z_STRLEN_PP(name) - (colon.s - 
Z_STRVAL_PP(name) + 1), 1);
+   } else if (Z_TYPE_PP(name) == IS_UNICODE 
+   (colon.u = u_memrchr(Z_USTRVAL_PP(name), ':', Z_USTRLEN_PP(name))) 

+   colon.u  Z_USTRVAL_PP(name)  *(colon.u-1) == ':') {
+   RETURN_UNICODEL(colon.u + 1, Z_USTRLEN_PP(name) - (colon.u - 
Z_USTRVAL_PP(name) + 1), 1);
+}
+RETURN_ZVAL(*name, 1, 0);
+}
+/* }}} */
+
 /* {{{ proto public bool ReflectionMethod::isConstructor() U
Returns whether this method is the constructor */
 ZEND_METHOD(reflection_method, isConstructor)
@@ -3842,6 +3914,78 @@
 }
 /* }}} */
 
+/* {{{ proto public bool ReflectionClass::inNamespace()
+   Returns whether this class is defined in namespace */
+ZEND_METHOD(reflection_class, inNamespace)
+{
+   zval **name;
+   zstr colon;
+
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
+   if (zend_hash_find(Z_OBJPROP_P(getThis()), name, sizeof(name), 
(void **) name) == FAILURE) {
+   RETURN_FALSE;
+   }
+   if (Z_TYPE_PP(name) == IS_STRING 
+   (colon.s = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name))) 

+   colon.s  Z_STRVAL_PP(name)  *(colon.s-1) == ':') {
+   RETURN_TRUE;
+   

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug45139.phpt

2008-05-31 Thread Felipe Pena
felipe  Sun Jun  1 03:13:54 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   bug45139.phpt 
  Log:
  - MFB: Fixed bug #45139 (ReflectionProperty returns incorrect declaring class)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.295r2=1.296diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.295 
php-src/ext/reflection/php_reflection.c:1.296
--- php-src/ext/reflection/php_reflection.c:1.295   Mon Feb 18 14:31:01 2008
+++ php-src/ext/reflection/php_reflection.c Sun Jun  1 03:13:54 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.295 2008/02/18 14:31:01 dmitry Exp $ */
+/* $Id: php_reflection.c,v 1.296 2008/06/01 03:13:54 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4202,7 +4202,7 @@
prop_name_len = USTR_LEN(prop_name);
ce = tmp_ce = ref-ce;
while (tmp_ce  zend_u_hash_find(tmp_ce-properties_info, 
UG(unicode)?IS_UNICODE:IS_STRING, prop_name, prop_name_len + 1, (void **) 
tmp_info) == SUCCESS) {
-   if (tmp_info-flags  ZEND_ACC_PRIVATE) {
+   if (tmp_info-flags  ZEND_ACC_PRIVATE || tmp_info-flags  
ZEND_ACC_SHADOW) {
/* it's a private property, so it can't be inherited */
break;
}
@@ -5060,7 +5060,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.295 
2008/02/18 14:31:01 dmitry Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.296 
2008/06/01 03:13:54 felipe Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug45139.phpt?r1=1.1r2=1.2diff_format=u
Index: php-src/ext/reflection/tests/bug45139.phpt
diff -u /dev/null php-src/ext/reflection/tests/bug45139.phpt:1.2
--- /dev/null   Sun Jun  1 03:13:54 2008
+++ php-src/ext/reflection/tests/bug45139.phpt  Sun Jun  1 03:13:54 2008
@@ -0,0 +1,58 @@
+--TEST--
+Bug #45139 (ReflectionProperty returns incorrect declaring class)
+--FILE--
+?php
+
+class A {
+   private $foo;
+}
+
+class B extends A {
+   protected $bar;
+   private $baz;
+   private $quux;
+}
+
+class C extends B {
+   public $foo;
+   private $baz;
+   protected $quux;
+}
+
+$rc = new ReflectionClass('C');
+$rp = $rc-getProperty('foo');
+var_dump($rp-getDeclaringClass()-getName()); // c
+
+$rc = new ReflectionClass('A');
+$rp = $rc-getProperty('foo');
+var_dump($rp-getDeclaringClass()-getName()); // A
+
+$rc = new ReflectionClass('B');
+$rp = $rc-getProperty('bar');
+var_dump($rp-getDeclaringClass()-getName()); // B
+
+$rc = new ReflectionClass('C');
+$rp = $rc-getProperty('bar');
+var_dump($rp-getDeclaringClass()-getName()); // B
+
+$rc = new ReflectionClass('C');
+$rp = $rc-getProperty('baz');
+var_dump($rp-getDeclaringClass()-getName()); // C
+
+$rc = new ReflectionClass('B');
+$rp = $rc-getProperty('baz');
+var_dump($rp-getDeclaringClass()-getName()); // B
+
+$rc = new ReflectionClass('C');
+$rp = $rc-getProperty('quux');
+var_dump($rp-getDeclaringClass()-getName()); // C
+
+?
+--EXPECT--
+unicode(1) C
+unicode(1) A
+unicode(1) B
+unicode(1) B
+unicode(1) C
+unicode(1) B
+unicode(1) C



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2008-02-18 Thread Dmitry Stogov
dmitry  Mon Feb 18 14:31:01 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Made code opcode-cache friendly. (It is disallowed to change code during 
execution)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.294r2=1.295diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.294 
php-src/ext/reflection/php_reflection.c:1.295
--- php-src/ext/reflection/php_reflection.c:1.294   Fri Feb 15 12:47:21 2008
+++ php-src/ext/reflection/php_reflection.c Mon Feb 18 14:31:01 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.294 2008/02/15 12:47:21 derick Exp $ */
+/* $Id: php_reflection.c,v 1.295 2008/02/18 14:31:01 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2178,7 +2178,6 @@
reflection_object *intern;
parameter_reference *param;
zend_op *precv;
-   zval *zv, zv_copy;
 
METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
GET_REFLECTION_OBJECT_PTR(param);
@@ -2198,10 +2197,12 @@
return;
}
 
-   zv_copy = precv-op2.u.constant;
-   zv = zv_copy;
-   zval_update_constant_ex(zv, (void*)0, param-fptr-common.scope 
TSRMLS_CC);
-   RETURN_ZVAL(zv, 1, 1);
+   *return_value = precv-op2.u.constant;
+   INIT_PZVAL(return_value);
+   if (Z_TYPE_P(return_value) != IS_CONSTANT) {
+   zval_copy_ctor(return_value);
+   }
+   zval_update_constant_ex(return_value, (void*)0, 
param-fptr-common.scope TSRMLS_CC);
 }
 /* }}} */
 
@@ -5059,7 +5060,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.294 
2008/02/15 12:47:21 derick Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.295 
2008/02/18 14:31:01 dmitry Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests reflectionProperty_setAccesible.phpt

2008-02-15 Thread Derick Rethans
derick  Fri Feb 15 12:37:38 2008 UTC

  Added files: 
/php-src/ext/reflection/tests   reflectionProperty_setAccesible.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Add the ReflectionProperty::setAccesible() method that allows non-public
property's values to be read through ::getValue().
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.292r2=1.293diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.292 
php-src/ext/reflection/php_reflection.c:1.293
--- php-src/ext/reflection/php_reflection.c:1.292   Wed Jan 30 12:50:49 2008
+++ php-src/ext/reflection/php_reflection.c Fri Feb 15 12:37:37 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.292 2008/01/30 12:50:49 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.293 2008/02/15 12:37:37 derick Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -175,6 +175,7 @@
 typedef struct _property_reference {
zend_class_entry *ce;
zend_property_info prop;
+   unsigned int ignore_visibility:1;
 } property_reference;
 
 /* Struct for parameters */
@@ -1196,6 +1197,7 @@
reference = (property_reference*) emalloc(sizeof(property_reference));
reference-ce = ce;
reference-prop = *prop;
+   reference-ignore_visibility = 0;
intern-ptr = reference;
intern-free_ptr = 1;
intern-ce = ce;
@@ -3939,6 +3941,7 @@
reference = (property_reference*) emalloc(sizeof(property_reference));
reference-ce = ce;
reference-prop = *property_info;
+   reference-ignore_visibility = 0;
intern-ptr = reference;
intern-free_ptr = 1;
intern-ce = ce;
@@ -4078,7 +4081,7 @@
METHOD_NOTSTATIC(reflection_property_ptr);
GET_REFLECTION_OBJECT_PTR(ref);
 
-   if (!(ref-prop.flags  ZEND_ACC_PUBLIC)) {
+   if (!(ref-prop.flags  ZEND_ACC_PUBLIC)  ref-ignore_visibility == 
0) {
_default_get_entry(getThis(), name, sizeof(name), name 
TSRMLS_CC);
zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, 
Cannot access non-public member %v::%v, 
intern-ce-name, Z_UNIVAL(name));
@@ -4226,6 +4229,24 @@
 }
 /* }}} */
 
+/* {{{ proto public int ReflectionProperty::setAccesible() U
+   Sets whether non-public properties can be requested */
+ZEND_METHOD(reflection_property, setAccesible)
+{
+   reflection_object *intern;
+   property_reference *ref;
+   zend_bool visible;
+
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 1);
+   GET_REFLECTION_OBJECT_PTR(ref);
+
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, b, visible) == 
FAILURE) {
+   return;
+   }
+   ref-ignore_visibility = visible;
+}
+/* }}} */
+
 /* {{{ proto public static mixed ReflectionExtension::export(string name [, 
bool return]) throws ReflectionException U
Exports a reflection object. Returns the output if TRUE is specified for 
return, printing it otherwise. */
 ZEND_METHOD(reflection_extension, export)
@@ -4837,6 +4858,11 @@
ZEND_ARG_INFO(0, value)
 ZEND_END_ARG_INFO()
 
+static
+ZEND_BEGIN_ARG_INFO(arginfo_reflection_property_setAccesible, 0)
+   ZEND_ARG_INFO(0, value)
+ZEND_END_ARG_INFO()
+
 static const zend_function_entry reflection_property_functions[] = {
ZEND_ME(reflection, __clone, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
ZEND_ME(reflection_property, export, 
arginfo_reflection_property_export, ZEND_ACC_STATIC|ZEND_ACC_PUBLIC)
@@ -4854,6 +4880,7 @@
ZEND_ME(reflection_property, getDefaultValue, NULL, 0)
ZEND_ME(reflection_property, getDeclaringClass, NULL, 0)
ZEND_ME(reflection_property, getDocComment, NULL, 0)
+   ZEND_ME(reflection_property, setAccesible, 
arginfo_reflection_property_setAccesible, 0)
{NULL, NULL, NULL}
 };
 
@@ -5032,7 +5059,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.292 
2008/01/30 12:50:49 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.293 
2008/02/15 12:37:37 derick Exp $);
 
php_info_print_table_end();
 } /* }}} */

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/reflectionProperty_setAccesible.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/reflectionProperty_setAccesible.phpt
+++ php-src/ext/reflection/tests/reflectionProperty_setAccesible.phpt
--TEST--
Test ReflectionProperty::setAccesible().
--SKIPIF--
?php extension_loaded('reflection') or die('skip'); ?
--FILE--
?php

class TestClass {
public $pub;
public $pub2 = 5;
static public $stat = static property;
protected $prot = 4;
private $priv = keepOut;
}


[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests reflectionProperty_setAccesible.phpt reflectionProperty_setAccessible.phpt

2008-02-15 Thread Derick Rethans
derick  Fri Feb 15 12:47:21 2008 UTC

  Added files: 
/php-src/ext/reflection/tests   reflectionProperty_setAccessible.phpt 

  Removed files:   
/php-src/ext/reflection/tests   reflectionProperty_setAccesible.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fixed typo
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.293r2=1.294diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.293 
php-src/ext/reflection/php_reflection.c:1.294
--- php-src/ext/reflection/php_reflection.c:1.293   Fri Feb 15 12:37:37 2008
+++ php-src/ext/reflection/php_reflection.c Fri Feb 15 12:47:21 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.293 2008/02/15 12:37:37 derick Exp $ */
+/* $Id: php_reflection.c,v 1.294 2008/02/15 12:47:21 derick Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4229,9 +4229,9 @@
 }
 /* }}} */
 
-/* {{{ proto public int ReflectionProperty::setAccesible() U
+/* {{{ proto public int ReflectionProperty::setAccessible() U
Sets whether non-public properties can be requested */
-ZEND_METHOD(reflection_property, setAccesible)
+ZEND_METHOD(reflection_property, setAccessible)
 {
reflection_object *intern;
property_reference *ref;
@@ -4859,7 +4859,7 @@
 ZEND_END_ARG_INFO()
 
 static
-ZEND_BEGIN_ARG_INFO(arginfo_reflection_property_setAccesible, 0)
+ZEND_BEGIN_ARG_INFO(arginfo_reflection_property_setAccessible, 0)
ZEND_ARG_INFO(0, value)
 ZEND_END_ARG_INFO()
 
@@ -4880,7 +4880,7 @@
ZEND_ME(reflection_property, getDefaultValue, NULL, 0)
ZEND_ME(reflection_property, getDeclaringClass, NULL, 0)
ZEND_ME(reflection_property, getDocComment, NULL, 0)
-   ZEND_ME(reflection_property, setAccesible, 
arginfo_reflection_property_setAccesible, 0)
+   ZEND_ME(reflection_property, setAccessible, 
arginfo_reflection_property_setAccessible, 0)
{NULL, NULL, NULL}
 };
 
@@ -5059,7 +5059,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.293 
2008/02/15 12:37:37 derick Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.294 
2008/02/15 12:47:21 derick Exp $);
 
php_info_print_table_end();
 } /* }}} */

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt
+++ php-src/ext/reflection/tests/reflectionProperty_setAccessible.phpt
--TEST--
Test ReflectionProperty::setAccessible().
--SKIPIF--
?php extension_loaded('reflection') or die('skip'); ?
--FILE--
?php

class TestClass {
public $pub;
public $pub2 = 5;
static public $stat = static property;
protected $prot = 4;
private $priv = keepOut;
}

class AnotherClass {
}

$instance = new TestClass();

echo \nProtected property:\n;
$propInfo = new ReflectionProperty('TestClass', 'prot');
try {
var_dump($propInfo-getValue($instance));
}
catch(Exception $exc) {
echo $exc-getMessage(), \n;
}

$propInfo-setAccessible(true);
var_dump($propInfo-getValue($instance));

$propInfo-setAccessible(false);
try {
var_dump($propInfo-getValue($instance));
}
catch(Exception $exc) {
echo $exc-getMessage(), \n;
}
?
--EXPECTF--

Protected property:
Cannot access non-public member TestClass::prot
int(4)
Cannot access non-public member TestClass::prot

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug43926.phpt

2008-01-30 Thread Felipe Pena
felipe  Wed Jan 30 10:54:41 2008 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   bug43926.phpt 
  Log:
  Fixed Bug #43926 (isInstance() isn't equivalent to instanceof operator)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.290r2=1.291diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.290 
php-src/ext/reflection/php_reflection.c:1.291
--- php-src/ext/reflection/php_reflection.c:1.290   Wed Jan 16 14:19:07 2008
+++ php-src/ext/reflection/php_reflection.c Wed Jan 30 10:54:41 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.290 2008/01/16 14:19:07 helly Exp $ */
+/* $Id: php_reflection.c,v 1.291 2008/01/30 10:54:41 felipe Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3481,7 +3481,7 @@
return;
}
GET_REFLECTION_OBJECT_PTR(ce);  
-   RETURN_BOOL(ce == Z_OBJCE_P(object));
+   RETURN_BOOL(HAS_CLASS_ENTRY(*object)  
instanceof_function(Z_OBJCE_P(object), ce));
 }
 /* }}} */
 
@@ -5032,7 +5032,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.290 
2008/01/16 14:19:07 helly Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.291 
2008/01/30 10:54:41 felipe Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug43926.phpt?r1=1.1r2=1.2diff_format=u
Index: php-src/ext/reflection/tests/bug43926.phpt
diff -u /dev/null php-src/ext/reflection/tests/bug43926.phpt:1.2
--- /dev/null   Wed Jan 30 10:54:41 2008
+++ php-src/ext/reflection/tests/bug43926.phpt  Wed Jan 30 10:54:41 2008
@@ -0,0 +1,37 @@
+--TEST--
+Bug#43926 - isInstance() isn't equivalent to instanceof operator
+--FILE--
+?php
+
+class E {
+}
+class D extends E {
+}
+
+class A extends D {
+}
+
+class C extends A {
+}
+
+$ra = new ReflectionClass('A');
+$rc = new ReflectionClass('C');
+$rd = new ReflectionClass('D');
+$re = new ReflectionClass('E');
+
+$ca = $ra-newInstance();
+$cc = $rc-newInstance();
+$cd = $rd-newInstance();
+$ce = $re-newInstance();
+
+print(Is? A . ($ra-isInstance($ca) ? 'true' : 'false') ., instanceof: . 
(($ca instanceof A) ? 'true' : 'false') .\n);
+print(Is? C . ($ra-isInstance($cc) ? 'true' : 'false') ., instanceof: . 
(($ca instanceof C) ? 'true' : 'false') .\n);
+print(Is? D . ($ra-isInstance($cd) ? 'true' : 'false') ., instanceof: . 
(($ca instanceof D) ? 'true' : 'false') .\n);
+print(Is? E . ($ra-isInstance($ce) ? 'true' : 'false') ., instanceof: . 
(($ca instanceof E) ? 'true' : 'false') .\n);
+
+?
+--EXPECT--
+Is? A true, instanceof: true
+Is? C false, instanceof: false
+Is? D true, instanceof: true
+Is? E true, instanceof: true
\ 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] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug37964.phpt

2008-01-16 Thread Marcus Boerger
helly   Wed Jan 16 14:19:07 2008 UTC

  Added files: 
/php-src/ext/reflection/tests   bug37964.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fixed Bug #37964 (Reflection shows private methods of parent class)
([EMAIL PROTECTED])
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.289r2=1.290diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.289 
php-src/ext/reflection/php_reflection.c:1.290
--- php-src/ext/reflection/php_reflection.c:1.289   Mon Dec 31 07:12:14 2007
+++ php-src/ext/reflection/php_reflection.c Wed Jan 16 14:19:07 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.289 2007/12/31 07:12:14 sebastian Exp $ */
+/* $Id: php_reflection.c,v 1.290 2008/01/16 14:19:07 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -519,7 +519,8 @@

zend_hash_internal_pointer_reset_ex(ce-function_table, pos);
 
while 
(zend_hash_get_current_data_ex(ce-function_table, (void **) mptr, pos) == 
SUCCESS) {
-   if (!(mptr-common.fn_flags  ZEND_ACC_STATIC)) 
{
+   if ((mptr-common.fn_flags  ZEND_ACC_STATIC) 
== 0 
+   ((mptr-common.fn_flags  
ZEND_ACC_PRIVATE) == 0 || mptr-common.scope == ce)) {
zstr key;
uint key_len;
ulong num_index;
@@ -541,6 +542,9 @@
zend_hash_move_forward_ex(ce-function_table, 
pos);
}
string_printf(str, \n%s  - Methods [%d] {, indent, 
count);
+   if (!count) {
+   string_printf(str, \n);
+   }
string_append(str, dyn);
string_free(dyn);
} else {
@@ -5028,7 +5032,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.289 
2007/12/31 07:12:14 sebastian Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.290 
2008/01/16 14:19:07 helly Exp $);
 
php_info_print_table_end();
 } /* }}} */

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug37964.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/bug37964.phpt
+++ php-src/ext/reflection/tests/bug37964.phpt
--TEST--
Reflection Bug #37964 (Reflection shows private methods of parent class)
--FILE--
?php

abstract class foobar {
private function test2() {
}   
}
class foo extends foobar {
private $foo = 1;
private function test() {
}
protected function test3() {
}
}
class bar extends foo {
private function foobar() {
}
}

Reflection::export(new ReflectionClass(new bar));

?
--EXPECTF--
Class [ user class bar extends foo ] {
  @@ %s %s

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [0] {
  }

  - Methods [2] {
Method [ user private method foobar ] {
  @@ %s %d - %d
}

Method [ user, inherits foo protected method test3 ] {
  @@ %s %d - %d
}
  }
}

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug42976.phpt

2007-10-28 Thread Ilia Alshanetsky
iliaa   Sun Oct 28 13:44:09 2007 UTC

  Modified files:  
/php-src/ext/reflection/tests   bug42976.phpt 
/php-src/ext/reflection php_reflection.c 
  Log:
  
  MFB: Fixed bug #42976 (Crash when constructor for newInstance() or 
  newInstanceArgs() fails)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug42976.phpt?r1=1.1r2=1.2diff_format=u
Index: php-src/ext/reflection/tests/bug42976.phpt
diff -u /dev/null php-src/ext/reflection/tests/bug42976.phpt:1.2
--- /dev/null   Sun Oct 28 13:44:09 2007
+++ php-src/ext/reflection/tests/bug42976.phpt  Sun Oct 28 13:44:09 2007
@@ -0,0 +1,34 @@
+--TEST--
+Bug #42976 (Crash when constructor for newInstance() or newInstanceArgs() 
fails)
+--FILE--
+?php
+
+Class C {
+   function __construct($x) {
+   $x = x.changed;
+   }
+}
+
+$x = x.original;
+new C($x); // OK
+var_dump($x);
+
+$rc = new ReflectionClass('C');
+$x = x.original;
+$rc-newInstance($x); // causes crash
+var_dump($x);
+$x = x.original;
+$rc-newInstanceArgs(array($x)); // causes crash   
+var_dump($x);
+
+echo Done\n;
+?
+--EXPECTF--
+string(9) x.changed
+
+Warning: Invocation of C's constructor failed in %s/bug42976.php on line %d
+string(10) x.original
+
+Warning: Invocation of C's constructor failed in %s/bug42976.php on line %d
+string(10) x.original
+Done
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.286r2=1.287diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.286 
php-src/ext/reflection/php_reflection.c:1.287
--- php-src/ext/reflection/php_reflection.c:1.286   Sun Oct  7 05:15:04 2007
+++ php-src/ext/reflection/php_reflection.c Sun Oct 28 13:44:09 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.286 2007/10/07 05:15:04 davidw Exp $ */
+/* $Id: php_reflection.c,v 1.287 2007/10/28 13:44:09 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3484,7 +3484,7 @@
Returns an instance of this class */
 ZEND_METHOD(reflection_class, newInstance)
 {
-   zval *retval_ptr;
+   zval *retval_ptr = NULL;
reflection_object *intern;
zend_class_entry *ce;
int argc = ZEND_NUM_ARGS();
@@ -3528,7 +3528,9 @@
 
if (zend_call_function(fci, fcc TSRMLS_CC) == FAILURE) {
efree(params);
-   zval_ptr_dtor(retval_ptr);
+   if (retval_ptr) {
+   zval_ptr_dtor(retval_ptr);
+   }
zend_error(E_WARNING, Invocation of %v's constructor 
failed, ce-name);
RETURN_NULL();
}
@@ -3548,7 +3550,7 @@
Returns an instance of this class */
 ZEND_METHOD(reflection_class, newInstanceArgs)
 {
-   zval *retval_ptr;
+   zval *retval_ptr = NULL;
reflection_object *intern;
zend_class_entry *ce;
int argc = 0;
@@ -3603,7 +3605,9 @@
if (params) {
efree(params);
}
-   zval_ptr_dtor(retval_ptr);
+   if (retval_ptr) {
+   zval_ptr_dtor(retval_ptr);
+   }
zend_error(E_WARNING, Invocation of %v's constructor 
failed, ce-name);
RETURN_NULL();
}
@@ -5022,7 +5026,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.286 
2007/10/07 05:15:04 davidw Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.287 
2007/10/28 13:44:09 iliaa Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-09-27 Thread Antony Dovgal
tony2001Thu Sep 27 09:14:56 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  fix coverity issue #411
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.283r2=1.284diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.283 
php-src/ext/reflection/php_reflection.c:1.284
--- php-src/ext/reflection/php_reflection.c:1.283   Tue Sep 11 11:16:46 2007
+++ php-src/ext/reflection/php_reflection.c Thu Sep 27 09:14:56 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.283 2007/09/11 11:16:46 dmitry Exp $ */
+/* $Id: php_reflection.c,v 1.284 2007/09/27 09:14:56 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2018,7 +2018,7 @@
 {
reflection_object *intern;
parameter_reference *param;
-   zend_class_entry **pce;
+   zend_class_entry **pce, *ce;
 
METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
GET_REFLECTION_OBJECT_PTR(param);
@@ -2038,7 +2038,7 @@
 * lint-mode.
 */
if (ZEND_U_EQUAL(ZEND_STR_TYPE, param-arg_info-class_name, 
param-arg_info-class_name_len, self, sizeof(self)- 1)) {
-   zend_class_entry *ce= param-fptr-common.scope;
+   ce = param-fptr-common.scope;
if (!ce) {
   zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, 
   Parameter uses 'self' as type hint but 
function is not a class member!);
@@ -2046,7 +2046,7 @@
}
pce= ce;
} else if (ZEND_U_EQUAL(ZEND_STR_TYPE, 
param-arg_info-class_name,  param-arg_info-class_name_len, parent, 
sizeof(parent)- 1)) {
-   zend_class_entry *ce= param-fptr-common.scope;
+   ce = param-fptr-common.scope;
if (!ce) {
   zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, 
   Parameter uses 'parent' as type hint but 
function is not a class member!);
@@ -5022,7 +5022,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.283 
2007/09/11 11:16:46 dmitry Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.284 
2007/09/27 09:14:56 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-09-11 Thread Dmitry Stogov
dmitry  Tue Sep 11 11:16:46 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Simplify (the prototype of zend_u_get_constant_ex() is going to be changed)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.282r2=1.283diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.282 
php-src/ext/reflection/php_reflection.c:1.283
--- php-src/ext/reflection/php_reflection.c:1.282   Mon Aug 20 17:01:59 2007
+++ php-src/ext/reflection/php_reflection.c Tue Sep 11 11:16:46 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.282 2007/08/20 17:01:59 sebastian Exp $ */
+/* $Id: php_reflection.c,v 1.283 2007/09/11 11:16:46 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2058,7 +2058,7 @@
   return;
}
pce= ce-parent;
-   } else if 
(zend_u_lookup_class_ex(UG(unicode)?IS_UNICODE:IS_STRING, 
param-arg_info-class_name, param-arg_info-class_name_len, 1, 1, pce 
TSRMLS_CC) == FAILURE) {
+   } else if 
(zend_u_lookup_class(UG(unicode)?IS_UNICODE:IS_STRING, 
param-arg_info-class_name, param-arg_info-class_name_len, pce TSRMLS_CC) 
== FAILURE) {
zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, 
Class %v does not exist, 
param-arg_info-class_name);
return;
@@ -5022,7 +5022,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.282 
2007/08/20 17:01:59 sebastian Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.283 
2007/09/11 11:16:46 dmitry Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



Re: [PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-08-20 Thread Marcus Boerger
Hello Johannes,

  iirc this is based on fixing a bug, thus came in later.

marcus

Friday, August 17, 2007, 4:21:01 PM, you wrote:

 johannesFri Aug 17 14:21:01 2007 UTC

   Modified files:  
 /php-src/ext/reflection php_reflection.c 
   Log:
   - Mark the parameter for ReflectionProperty::GetValue as optional
   # [DOC] The documentation on this is wrong, too. The parameter is only
   # needed for getting the value of an object's property, not for static
   # ones. (I'm not sure if it has always been that way...)
   
   
 http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.280r2=1.281diff_format=u
 Index: php-src/ext/reflection/php_reflection.c
 diff -u php-src/ext/reflection/php_reflection.c:1.280
 php-src/ext/reflection/php_reflection.c:1.281
 --- php-src/ext/reflection/php_reflection.c:1.280   Tue Jul 24 23:16:47 
 2007
 +++ php-src/ext/reflection/php_reflection.c Fri Aug 17 14:21:00 2007
 @@ -20,7 +20,7 @@
 +--+
  */
  
 -/* $Id: php_reflection.c,v 1.280 2007/07/24 23:16:47 johannes Exp $ */
 +/* $Id: php_reflection.c,v 1.281 2007/08/17 14:21:00 johannes Exp $ */
  
  #ifdef HAVE_CONFIG_H
  #include config.h
 @@ -4817,7 +4817,7 @@
  ZEND_END_ARG_INFO()
  
  static
 -ZEND_BEGIN_ARG_INFO(arginfo_reflection_property_getValue, 0)
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_reflection_property_getValue, 0, 0, 0)
 ZEND_ARG_INFO(0, object)
  ZEND_END_ARG_INFO()
  
 @@ -5022,7 +5022,7 @@
 php_info_print_table_start();
 php_info_print_table_header(2, Reflection, enabled);
  
 -   php_info_print_table_row(2, Version, $Id: php_reflection.c,v
 1.280 2007/07/24 23:16:47 johannes Exp $);
 +   php_info_print_table_row(2, Version, $Id: php_reflection.c,v
 1.281 2007/08/17 14:21:00 johannes Exp $);
  
 php_info_print_table_end();
  } /* }}} */






Best regards,
 Marcus

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-08-20 Thread Sebastian Bergmann
sebastian   Mon Aug 20 17:01:59 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - MFB: Fugbix typo.
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.281r2=1.282diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.281 
php-src/ext/reflection/php_reflection.c:1.282
--- php-src/ext/reflection/php_reflection.c:1.281   Fri Aug 17 14:21:00 2007
+++ php-src/ext/reflection/php_reflection.c Mon Aug 20 17:01:59 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.281 2007/08/17 14:21:00 johannes Exp $ */
+/* $Id: php_reflection.c,v 1.282 2007/08/20 17:01:59 sebastian Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2778,7 +2778,7 @@
 /* }}} */
 
 /* {{{ proto public mixed ReflectionClass::getStaticPropertyValue(string name 
[, mixed default]) U
-   Returns the value of a tsstic property */
+   Returns the value of a static property */
 ZEND_METHOD(reflection_class, getStaticPropertyValue)
 {
reflection_object *intern;
@@ -5022,7 +5022,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.281 
2007/08/17 14:21:00 johannes Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.282 
2007/08/20 17:01:59 sebastian Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-08-17 Thread Johannes Schl�ter
johannesFri Aug 17 14:21:01 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Mark the parameter for ReflectionProperty::GetValue as optional
  # [DOC] The documentation on this is wrong, too. The parameter is only
  # needed for getting the value of an object's property, not for static
  # ones. (I'm not sure if it has always been that way...)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.280r2=1.281diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.280 
php-src/ext/reflection/php_reflection.c:1.281
--- php-src/ext/reflection/php_reflection.c:1.280   Tue Jul 24 23:16:47 2007
+++ php-src/ext/reflection/php_reflection.c Fri Aug 17 14:21:00 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.280 2007/07/24 23:16:47 johannes Exp $ */
+/* $Id: php_reflection.c,v 1.281 2007/08/17 14:21:00 johannes Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4817,7 +4817,7 @@
 ZEND_END_ARG_INFO()
 
 static
-ZEND_BEGIN_ARG_INFO(arginfo_reflection_property_getValue, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_reflection_property_getValue, 0, 0, 0)
ZEND_ARG_INFO(0, object)
 ZEND_END_ARG_INFO()
 
@@ -5022,7 +5022,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.280 
2007/07/24 23:16:47 johannes Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.281 
2007/08/17 14:21:00 johannes Exp $);
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests 026.phpt

2007-07-24 Thread Johannes Schl�ter
johannesTue Jul 24 23:16:47 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   026.phpt 
  Log:
  - MFB: New ReflectionExtension::info() function to print the phpinfo() block
for an extension.
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.279r2=1.280diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.279 
php-src/ext/reflection/php_reflection.c:1.280
--- php-src/ext/reflection/php_reflection.c:1.279   Mon Jul 23 01:21:04 2007
+++ php-src/ext/reflection/php_reflection.c Tue Jul 24 23:16:47 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.279 2007/07/23 01:21:04 bjori Exp $ */
+/* $Id: php_reflection.c,v 1.280 2007/07/24 23:16:47 johannes Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4512,6 +4512,20 @@
 }
 /* }}} */
 
+/* {{{ proto public void ReflectionExtension::info() U
+   Prints phpinfo block for the extension */
+ZEND_METHOD(reflection_extension, info)
+{
+   reflection_object *intern;
+   zend_module_entry *module;
+
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
+   GET_REFLECTION_OBJECT_PTR(module);
+
+   php_info_print_module(module TSRMLS_CC);
+}
+/* }}} */
+
 /* {{{ method tables */
 static zend_function_entry reflection_exception_functions[] = {
{NULL, NULL, NULL}
@@ -4889,6 +4903,7 @@
ZEND_ME(reflection_extension, getClasses, NULL, 0)
ZEND_ME(reflection_extension, getClassNames, NULL, 0)
ZEND_ME(reflection_extension, getDependencies, NULL, 0)
+   ZEND_ME(reflection_extension, info, NULL, 0)
{NULL, NULL, NULL}
 };
 /* }}} */
@@ -5007,7 +5022,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.279 
2007/07/23 01:21:04 bjori Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.280 
2007/07/24 23:16:47 johannes Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/026.phpt?r1=1.1r2=1.2diff_format=u
Index: php-src/ext/reflection/tests/026.phpt
diff -u /dev/null php-src/ext/reflection/tests/026.phpt:1.2
--- /dev/null   Tue Jul 24 23:16:47 2007
+++ php-src/ext/reflection/tests/026.phpt   Tue Jul 24 23:16:47 2007
@@ -0,0 +1,36 @@
+--TEST--
+reflectionExtension::info()
+--SKIPIF--
+?php extension_loaded('reflection') or die('skip'); ?
+--FILE--
+?php
+$r = new ReflectionExtension(reflection);
+$r-info();
+
+date_default_timezone_set('Europe/Berlin');
+$r = new ReflectionExtension(date);
+$r-info();
+
+echo \nDone!\n;
+
+--EXPECTF--
+Reflection
+
+Reflection = enabled
+Version = %s
+
+date
+
+date/time support = enabled
+Olson Timezone Database Version = %s
+Timezone Database = %s
+Default timezone = %s
+
+Directive = %s = %s
+date.timezone = %s = %s
+date.default_latitude = %s = %s
+date.default_longitude = %s = %s
+date.sunset_zenith = %s = %s
+date.sunrise_zenith = %s = %s
+
+Done!

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-07-22 Thread Hannes Magnusson
bjori   Mon Jul 23 01:21:04 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  MFB: Avoid endless loop
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.278r2=1.279diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.278 
php-src/ext/reflection/php_reflection.c:1.279
--- php-src/ext/reflection/php_reflection.c:1.278   Wed Jul 11 22:03:59 2007
+++ php-src/ext/reflection/php_reflection.c Mon Jul 23 01:21:04 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.278 2007/07/11 22:03:59 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.279 2007/07/23 01:21:04 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -996,6 +996,7 @@
while (func-fname) {
if (zend_ascii_hash_find(EG(function_table), 
func-fname, strlen(func-fname) + 1, (void**) fptr) == FAILURE) {
zend_error(E_WARNING, Internal error: Cannot 
find extension function %s in global function table, func-fname);
+   func++;
continue;
}

@@ -4327,6 +4328,7 @@
while (func-fname) {
if (zend_ascii_hash_find(EG(function_table), 
func-fname, strlen(func-fname) + 1, (void**) fptr) == FAILURE) {
zend_error(E_WARNING, Internal error: Cannot 
find extension function %s in global function table, func-fname);
+   func++;
continue;
}

@@ -5005,7 +5007,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.278 
2007/07/11 22:03:59 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.279 
2007/07/23 01:21:04 bjori Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-07-11 Thread Antony Dovgal
tony2001Wed Jul 11 13:26:47 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  fix typo and bug #41962
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.276r2=1.277diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.276 
php-src/ext/reflection/php_reflection.c:1.277
--- php-src/ext/reflection/php_reflection.c:1.276   Fri Jul  6 12:11:20 2007
+++ php-src/ext/reflection/php_reflection.c Wed Jul 11 13:26:47 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.276 2007/07/06 12:11:20 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.277 2007/07/11 13:26:47 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3697,7 +3697,7 @@
case IS_UNICODE:
if (zend_u_lookup_class(Z_TYPE_P(class_name), 
Z_UNIVAL_P(class_name), Z_UNILEN_P(class_name), pce TSRMLS_CC) == FAILURE) {

zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, 
-   Interface %R does not exist, 
Z_TYPE_P(class_name), Z_UNIVAL_P(class_name));
+   Class %R does not exist, 
Z_TYPE_P(class_name), Z_UNIVAL_P(class_name));
return;
}
class_ce = *pce;
@@ -4998,7 +4998,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.276 
2007/07/06 12:11:20 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.277 
2007/07/11 13:26:47 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug41884.phpt

2007-07-11 Thread Antony Dovgal
tony2001Wed Jul 11 22:03:59 2007 UTC

  Added files: 
/php-src/ext/reflection/tests   bug41884.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  implement (or fix?) #41884 (ReflectionClass::getDefaultProperties() does not 
handle static attributes)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.277r2=1.278diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.277 
php-src/ext/reflection/php_reflection.c:1.278
--- php-src/ext/reflection/php_reflection.c:1.277   Wed Jul 11 13:26:47 2007
+++ php-src/ext/reflection/php_reflection.c Wed Jul 11 22:03:59 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.277 2007/07/11 13:26:47 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.278 2007/07/11 22:03:59 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2852,7 +2852,8 @@
 {
reflection_object *intern;
zend_class_entry *ce;
-   int count;
+   int count, i;
+   HashTable *ht_list[3];

METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
GET_REFLECTION_OBJECT_PTR(ce);
@@ -2860,34 +2861,40 @@
 
zend_update_class_constants(ce TSRMLS_CC);
 
-   count = zend_hash_num_elements(ce-default_properties);
-   if (count  0) {
-   HashPosition pos;
-   zval **prop;
+   ht_list[0] = CE_STATIC_MEMBERS(ce);
+   ht_list[1] = ce-default_properties;
+   ht_list[2] = NULL; /* this should be always the last element */
 
-   zend_hash_internal_pointer_reset_ex(ce-default_properties, 
pos);
-   while (zend_hash_get_current_data_ex(ce-default_properties, 
(void **) prop, pos) == SUCCESS) {
-   zstr key, class_name, prop_name;
-   uint key_len;
-   ulong num_index;
-   zval *prop_copy;
+   for (i = 0; ht_list[i] != NULL; i++) {
+   count = zend_hash_num_elements(ht_list[i]);
+   if (count  0) {
+   HashPosition pos;
+   zval **prop;
 
-   zend_hash_get_current_key_ex(ce-default_properties, 
key, key_len, num_index, 0, pos);
-   zend_hash_move_forward_ex(ce-default_properties, 
pos);
-   
zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, key, key_len-1, 
class_name, prop_name);
-   if (class_name.s  class_name.s[0] != '*'  
-   (UG(unicode)?u_strcmp(class_name.u, 
ce-name.u):strcmp(class_name.s, ce-name.s))) {
-   /* filter privates from base classes */
-   continue;
-   }
+   zend_hash_internal_pointer_reset_ex(ht_list[i], pos);
+   while (zend_hash_get_current_data_ex(ht_list[i], (void 
**) prop, pos) == SUCCESS) {
+   zstr key, class_name, prop_name;
+   uint key_len;
+   ulong num_index;
+   zval *prop_copy;
+
+   zend_hash_get_current_key_ex(ht_list[i], key, 
key_len, num_index, 0, pos);
+   zend_hash_move_forward_ex(ht_list[i], pos);
+   
zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, key, key_len-1, 
class_name, prop_name);
+   if (class_name.s  class_name.s[0] != '*'  
+   (UG(unicode)?u_strcmp(class_name.u, 
ce-name.u):strcmp(class_name.s, ce-name.s))) {
+   /* filter privates from base classes */
+   continue;
+   }
 
-   /* copy: enforce read only access */
-   ALLOC_ZVAL(prop_copy);
-   *prop_copy = **prop;
-   zval_copy_ctor(prop_copy);
-   INIT_PZVAL(prop_copy);
+   /* copy: enforce read only access */
+   ALLOC_ZVAL(prop_copy);
+   *prop_copy = **prop;
+   zval_copy_ctor(prop_copy);
+   INIT_PZVAL(prop_copy);
 
-   add_u_assoc_zval(return_value, ZEND_STR_TYPE, 
prop_name, prop_copy);
+   add_u_assoc_zval(return_value, ZEND_STR_TYPE, 
prop_name, prop_copy);
+   }
}
}
 }
@@ -4998,7 +5005,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-07-06 Thread Antony Dovgal
tony2001Fri Jul  6 12:11:20 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  fix folding
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.275r2=1.276diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.275 
php-src/ext/reflection/php_reflection.c:1.276
--- php-src/ext/reflection/php_reflection.c:1.275   Mon May 28 10:34:37 2007
+++ php-src/ext/reflection/php_reflection.c Fri Jul  6 12:11:20 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.275 2007/05/28 10:34:37 bjori Exp $ */
+/* $Id: php_reflection.c,v 1.276 2007/07/06 12:11:20 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -196,7 +196,7 @@
 
 static zend_object_handlers reflection_object_handlers;
 
-static void _default_get_entry(zval *object, char *name, int name_len, zval 
*return_value TSRMLS_DC)
+static void _default_get_entry(zval *object, char *name, int name_len, zval 
*return_value TSRMLS_DC) /* {{{ */
 {
zval **value;
 
@@ -208,16 +208,18 @@
zval_copy_ctor(return_value);
INIT_PZVAL(return_value);
 }
+/* }}} */
 
-static void reflection_register_implement(zend_class_entry *class_entry, 
zend_class_entry *interface_entry TSRMLS_DC)
+static void reflection_register_implement(zend_class_entry *class_entry, 
zend_class_entry *interface_entry TSRMLS_DC) /* {{{ */
 {
zend_uint num_interfaces = ++class_entry-num_interfaces;
 
class_entry-interfaces = (zend_class_entry **) 
realloc(class_entry-interfaces, sizeof(zend_class_entry *) * num_interfaces);
class_entry-interfaces[num_interfaces - 1] = interface_entry;
 }
+/* }}} */
 
-static void reflection_free_objects_storage(void *object TSRMLS_DC)
+static void reflection_free_objects_storage(void *object TSRMLS_DC) /* {{{ */
 {
reflection_object *intern = (reflection_object *) object;
 
@@ -230,8 +232,9 @@
}
zend_objects_free_object_storage(object TSRMLS_CC);
 }
+/* }}} */
 
-static void reflection_objects_clone(void *object, void **object_clone 
TSRMLS_DC)
+static void reflection_objects_clone(void *object, void **object_clone 
TSRMLS_DC) /* {{{ */
 {
reflection_object *intern = (reflection_object *) object;
reflection_object **intern_clone = (reflection_object **) object_clone;
@@ -245,8 +248,9 @@
zval_add_ref(intern-obj);
}
 }
+/* }}} */
 
-static zend_object_value reflection_objects_new(zend_class_entry *class_type 
TSRMLS_DC)
+static zend_object_value reflection_objects_new(zend_class_entry *class_type 
TSRMLS_DC) /* {{{ */
 {
zval tmp;
zend_object_value retval;
@@ -263,8 +267,9 @@
retval.handlers = reflection_object_handlers;
return retval;
 }
+/* }}} */
 
-static zval * reflection_instantiate(zend_class_entry *pce, zval *object 
TSRMLS_DC)
+static zval * reflection_instantiate(zend_class_entry *pce, zval *object 
TSRMLS_DC) /* {{{ */
 {
if (!object) {
ALLOC_ZVAL(object);
@@ -275,6 +280,7 @@
object-is_ref = 1;
return object;
 }
+/* }}} */
 
 static void _const_string(string *str, zstr name, zval *value, char *indent 
TSRMLS_DC);
 static void _function_string(string *str, zend_function *fptr, 
zend_class_entry *scope, char *indent TSRMLS_DC);
@@ -836,7 +842,7 @@
 }
 /* }}} */
 
-static int _extension_ini_string(zend_ini_entry *ini_entry, int num_args, 
va_list args, zend_hash_key *hash_key)
+static int _extension_ini_string(zend_ini_entry *ini_entry, int num_args, 
va_list args, zend_hash_key *hash_key) /* {{{ */
 {
string *str = va_arg(args, string *);
char *indent = va_arg(args, char *);
@@ -870,8 +876,9 @@
}
return ZEND_HASH_APPLY_KEEP;
 }
+/* }}} */
 
-static int _extension_class_string(zend_class_entry **pce, int num_args, 
va_list args, zend_hash_key *hash_key)
+static int _extension_class_string(zend_class_entry **pce, int num_args, 
va_list args, zend_hash_key *hash_key) /* {{{ */
 {
string *str = va_arg(args, string *);
char *indent = va_arg(args, char *);
@@ -886,8 +893,9 @@
}
return ZEND_HASH_APPLY_KEEP;
 }
+/* }}} */
 
-static int _extension_const_string(zend_constant *constant, int num_args, 
va_list args, zend_hash_key *hash_key)
+static int _extension_const_string(zend_constant *constant, int num_args, 
va_list args, zend_hash_key *hash_key) /* {{{ */
 {
string *str = va_arg(args, string *);
char *indent = va_arg(args, char *);
@@ -901,6 +909,7 @@
}
return ZEND_HASH_APPLY_KEEP;
 }
+/* }}} */
 
 /* {{{ _extension_string */
 static void _extension_string(string *str, zend_module_entry *module, char 
*indent TSRMLS_DC)
@@ -3944,7 +3953,7 @@
 }
 /* }}} */
 
-static void _property_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask)
+static void 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-05-28 Thread Hannes Magnusson
bjori   Mon May 28 10:34:37 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Fix logic
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.274r2=1.275diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.274 
php-src/ext/reflection/php_reflection.c:1.275
--- php-src/ext/reflection/php_reflection.c:1.274   Sat Mar 17 23:38:41 2007
+++ php-src/ext/reflection/php_reflection.c Mon May 28 10:34:37 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.274 2007/03/17 23:38:41 johannes Exp $ */
+/* $Id: php_reflection.c,v 1.275 2007/05/28 10:34:37 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -845,7 +845,7 @@
 
if (number == ini_entry-module_number) {
string_printf(str, %sEntry [ %s , indent, 
ini_entry-name);
-   if (ini_entry-modifiable  ZEND_INI_ALL) {
+   if (ini_entry-modifiable == ZEND_INI_ALL) {
string_printf(str, ALL);
} else {
if (ini_entry-modifiable  ZEND_INI_USER) {
@@ -4987,7 +4987,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.274 
2007/03/17 23:38:41 johannes Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.275 
2007/05/28 10:34:37 bjori Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-03-17 Thread Antony Dovgal
tony2001Sat Mar 17 22:59:22 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  fix #40794 (ReflectionObject::getValues() may crash when used with dynamic 
properties)
  
  http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.272r2=1.273diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.272 
php-src/ext/reflection/php_reflection.c:1.273
--- php-src/ext/reflection/php_reflection.c:1.272   Fri Mar 16 06:42:01 2007
+++ php-src/ext/reflection/php_reflection.c Sat Mar 17 22:59:22 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.272 2007/03/16 06:42:01 sebastian Exp $ */
+/* $Id: php_reflection.c,v 1.273 2007/03/17 22:59:22 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -174,7 +174,7 @@
 /* Struct for properties */
 typedef struct _property_reference {
zend_class_entry *ce;
-   zend_property_info *prop;
+   zend_property_info prop;
 } property_reference;
 
 /* Struct for parameters */
@@ -1180,7 +1180,7 @@
intern = (reflection_object *) zend_object_store_get_object(object 
TSRMLS_CC);
reference = (property_reference*) emalloc(sizeof(property_reference));
reference-ce = ce;
-   reference-prop = prop;
+   reference-prop = *prop;
intern-ptr = reference;
intern-free_ptr = 1;
intern-ce = ce;
@@ -3267,7 +3267,7 @@
ZVAL_STRINGL(member, hash_key-arKey.s, 
hash_key-nKeyLength-1, 0);
}
if (zend_get_property_info(ce, member, 1 TSRMLS_CC) == 
EG(std_property_info)) {
-   ALLOC_ZVAL(property);
+   MAKE_STD_ZVAL(property);
reflection_property_factory(ce, EG(std_property_info), 
property TSRMLS_CC);
add_next_index_zval(retval, property);
}
@@ -3912,7 +3912,7 @@
 
reference = (property_reference*) emalloc(sizeof(property_reference));
reference-ce = ce;
-   reference-prop = property_info;
+   reference-prop = *property_info;
intern-ptr = reference;
intern-free_ptr = 1;
intern-ce = ce;
@@ -3930,7 +3930,7 @@
METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
GET_REFLECTION_OBJECT_PTR(ref);
string_init(str);
-   _property_string(str, ref-prop, NULL_ZSTR,  TSRMLS_CC);
+   _property_string(str, ref-prop, NULL_ZSTR,  TSRMLS_CC);
RETURN_U_STRINGL(ZEND_U_CONVERTER(UG(output_encoding_conv)), 
str.string, str.len - 1, ZSTR_AUTOFREE);
 }
 /* }}} */
@@ -3951,7 +3951,7 @@
 
METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
GET_REFLECTION_OBJECT_PTR(ref);
-   RETURN_BOOL(ref-prop-flags  mask);
+   RETURN_BOOL(ref-prop.flags  mask);
 }
 
 /* {{{ proto public bool ReflectionProperty::isPublic() U
@@ -4007,13 +4007,13 @@
METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
GET_REFLECTION_OBJECT_PTR(ref);
 
-   if (ref-prop-flags  ZEND_ACC_STATIC) {
+   if (ref-prop.flags  ZEND_ACC_STATIC) {
prop_defaults = ref-ce-default_static_members;
} else {
prop_defaults = ref-ce-default_properties;
}
 
-   if (zend_u_hash_quick_find(prop_defaults, utype, ref-prop-name, 
ref-prop-name_length+1, ref-prop-h, (void**)zdef) == SUCCESS) {
+   if (zend_u_hash_quick_find(prop_defaults, utype, ref-prop.name, 
ref-prop.name_length+1, ref-prop.h, (void**)zdef) == SUCCESS) {
ALLOC_ZVAL(zv);
*zv = **zdef;
zval_copy_ctor(zv);
@@ -4034,7 +4034,7 @@
METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
GET_REFLECTION_OBJECT_PTR(ref);
 
-   RETURN_LONG(ref-prop-flags);
+   RETURN_LONG(ref-prop.flags);
 }
 /* }}} */
 
@@ -4051,7 +4051,7 @@
METHOD_NOTSTATIC(reflection_property_ptr);
GET_REFLECTION_OBJECT_PTR(ref);
 
-   if (!(ref-prop-flags  ZEND_ACC_PUBLIC)) {
+   if (!(ref-prop.flags  ZEND_ACC_PUBLIC)) {
_default_get_entry(getThis(), name, sizeof(name), name 
TSRMLS_CC);
zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, 
Cannot access non-public member %v::%v, 
intern-ce-name, Z_UNIVAL(name));
@@ -4059,18 +4059,18 @@
return;
}
 
-   if ((ref-prop-flags  ZEND_ACC_STATIC)) {
+   if ((ref-prop.flags  ZEND_ACC_STATIC)) {
zend_update_class_constants(intern-ce TSRMLS_CC);
-   if (zend_u_hash_quick_find(CE_STATIC_MEMBERS(intern-ce), 
utype, ref-prop-name, ref-prop-name_length + 1, ref-prop-h, (void **) 
member) == FAILURE) {
-   zend_error(E_ERROR, Internal error: Could not find the 
property %v::%v, intern-ce-name, ref-prop-name);
+   if (zend_u_hash_quick_find(CE_STATIC_MEMBERS(intern-ce), 
utype, 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug39884.phpt

2007-03-17 Thread Johannes Schl
johannesSat Mar 17 23:38:41 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   bug39884.phpt 
  Log:
  - Fix string compare in unicode mode
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.273r2=1.274diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.273 
php-src/ext/reflection/php_reflection.c:1.274
--- php-src/ext/reflection/php_reflection.c:1.273   Sat Mar 17 22:59:22 2007
+++ php-src/ext/reflection/php_reflection.c Sat Mar 17 23:38:41 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.273 2007/03/17 22:59:22 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.274 2007/03/17 23:38:41 johannes Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2027,7 +2027,7 @@
 * TODO: Think about moving these checks to the compiler or 
some sort of
 * lint-mode.
 */
-   if (0 == strncmp(param-arg_info-class_name.v, self, 
sizeof(self)- 1)) {
+   if (ZEND_U_EQUAL(ZEND_STR_TYPE, param-arg_info-class_name, 
param-arg_info-class_name_len, self, sizeof(self)- 1)) {
zend_class_entry *ce= param-fptr-common.scope;
if (!ce) {
   zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, 
@@ -2035,7 +2035,7 @@
   return;
}
pce= ce;
-   } else if (0 == strncmp(param-arg_info-class_name.v, 
parent, sizeof(parent)- 1)) {
+   } else if (ZEND_U_EQUAL(ZEND_STR_TYPE, 
param-arg_info-class_name,  param-arg_info-class_name_len, parent, 
sizeof(parent)- 1)) {
zend_class_entry *ce= param-fptr-common.scope;
if (!ce) {
   zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, 
@@ -4987,7 +4987,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.273 
2007/03/17 22:59:22 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.274 
2007/03/17 23:38:41 johannes Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug39884.phpt?r1=1.2r2=1.3diff_format=u
Index: php-src/ext/reflection/tests/bug39884.phpt
diff -u php-src/ext/reflection/tests/bug39884.phpt:1.2 
php-src/ext/reflection/tests/bug39884.phpt:1.3
--- php-src/ext/reflection/tests/bug39884.phpt:1.2  Fri Dec 22 15:38:42 2006
+++ php-src/ext/reflection/tests/bug39884.phpt  Sat Mar 17 23:38:41 2007
@@ -20,3 +20,9 @@
   [name]=
   string(13) stubParamTest
 }
+--UEXPECT--
+object(ReflectionClass)#4 (1) {
+  [uname]=
+  unicode(13) stubParamTest
+}
+

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2007-03-15 Thread Sebastian Bergmann
sebastian   Fri Mar 16 06:42:01 2007 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  MFB: Fugbix typo.
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.271r2=1.272diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.271 
php-src/ext/reflection/php_reflection.c:1.272
--- php-src/ext/reflection/php_reflection.c:1.271   Sat Feb 10 20:51:42 2007
+++ php-src/ext/reflection/php_reflection.c Fri Mar 16 06:42:01 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.271 2007/02/10 20:51:42 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.272 2007/03/16 06:42:01 sebastian Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -264,7 +264,7 @@
return retval;
 }
 
-static zval * reflection_instanciate(zend_class_entry *pce, zval *object 
TSRMLS_DC)
+static zval * reflection_instantiate(zend_class_entry *pce, zval *object 
TSRMLS_DC)
 {
if (!object) {
ALLOC_ZVAL(object);
@@ -1038,7 +1038,7 @@
 
MAKE_STD_ZVAL(name);
ZVAL_TEXTL(name, ce-name, ce-name_length, 1);
-   reflection_instanciate(reflection_class_ptr, object TSRMLS_CC);
+   reflection_instantiate(reflection_class_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object 
TSRMLS_CC);
intern-ptr = ce;
intern-free_ptr = 0;
@@ -1064,7 +1064,7 @@
}
free_alloca(lcname);
 
-   reflection_instanciate(reflection_extension_ptr, object TSRMLS_CC);
+   reflection_instantiate(reflection_extension_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object 
TSRMLS_CC);
MAKE_STD_ZVAL(name);
ZVAL_ASCII_STRINGL(name, module-name, name_len, 1);
@@ -1088,7 +1088,7 @@
} else {
ZVAL_NULL(name);
}
-   reflection_instanciate(reflection_parameter_ptr, object TSRMLS_CC);
+   reflection_instantiate(reflection_parameter_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object 
TSRMLS_CC);
reference = (parameter_reference*) emalloc(sizeof(parameter_reference));
reference-arg_info = arg_info;
@@ -,7 +,7 @@
MAKE_STD_ZVAL(name);
ZVAL_TEXT(name, function-common.function_name, 1);
 
-   reflection_instanciate(reflection_function_ptr, object TSRMLS_CC);
+   reflection_instantiate(reflection_function_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object 
TSRMLS_CC);
intern-ptr = function;
intern-free_ptr = 0;
@@ -1131,7 +1131,7 @@
MAKE_STD_ZVAL(classname);
ZVAL_TEXT(name, method-common.function_name, 1);
ZVAL_TEXTL(classname, ce-name, ce-name_length, 1);
-   reflection_instanciate(reflection_method_ptr, object TSRMLS_CC);
+   reflection_instantiate(reflection_method_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object 
TSRMLS_CC);
intern-ptr = method;
intern-free_ptr = 0;
@@ -1176,7 +1176,7 @@
ZVAL_TEXT(name, prop_name, 1);
ZVAL_TEXTL(classname, ce-name, ce-name_length, 1);
 
-   reflection_instanciate(reflection_property_ptr, object TSRMLS_CC);
+   reflection_instantiate(reflection_property_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object 
TSRMLS_CC);
reference = (property_reference*) emalloc(sizeof(property_reference));
reference-ce = ce;
@@ -4987,7 +4987,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.271 
2007/02/10 20:51:42 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.272 
2007/03/16 06:42:01 sebastian Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug40431.phpt

2007-02-10 Thread Antony Dovgal
tony2001Sat Feb 10 20:51:42 2007 UTC

  Added files: 
/php-src/ext/reflection/tests   bug40431.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  fix #40431 (dynamic properties may cause crash in ReflectionProperty methods)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.270r2=1.271diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.270 
php-src/ext/reflection/php_reflection.c:1.271
--- php-src/ext/reflection/php_reflection.c:1.270   Mon Jan  1 09:29:28 2007
+++ php-src/ext/reflection/php_reflection.c Sat Feb 10 20:51:42 2007
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.270 2007/01/01 09:29:28 sebastian Exp $ */
+/* $Id: php_reflection.c,v 1.271 2007/02/10 20:51:42 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1155,15 +1155,20 @@

if (!(prop-flags  ZEND_ACC_PRIVATE)) {
/* we have to search the class hierarchy for this (implicit) 
public or protected property */
-   zend_class_entry *tmp_ce = ce;
-   zend_property_info *tmp_info;
+   zend_class_entry *tmp_ce = ce, *store_ce = ce;
+   zend_property_info *tmp_info = NULL;
int prop_name_len = UG(unicode) ? u_strlen(prop_name.u) : 
strlen(prop_name.s);

while (tmp_ce  zend_u_hash_find(tmp_ce-properties_info, 
utype, prop_name, prop_name_len + 1, (void **) tmp_info) != SUCCESS) {
ce = tmp_ce;
-   prop = tmp_info;
tmp_ce = tmp_ce-parent;
}
+
+   if (tmp_info  !(tmp_info-flags  ZEND_ACC_SHADOW)) { /* 
found something and it's not a parent's private */
+   prop = tmp_info;
+   } else { /* not found, use initial value */
+   ce = store_ce;
+   }
}
 
MAKE_STD_ZVAL(name);
@@ -4982,7 +4987,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.270 
2007/01/01 09:29:28 sebastian Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.271 
2007/02/10 20:51:42 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug40431.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/bug40431.phpt
+++ php-src/ext/reflection/tests/bug40431.phpt
--TEST--
Bug #40431 (dynamic properties may cause crash in ReflectionProperty methods)
--FILE--
?php

echo === 1st test ===\n;

$Obj-value = 'value';
$RefObj = new ReflectionObject($Obj);

$props = $RefObj-getProperties();

var_dump($props);
var_dump($props[0]-isStatic());
var_dump($props[0]-isPrivate());
var_dump($props[0]-isPublic());
var_dump($props[0]-isProtected());

echo === 2nd test ===\n;

class test1 {
}

class test2 extends test1{
}

$Obj = new test2;
$Obj-value = 'value';
$RefObj = new ReflectionObject($Obj);

$props = $RefObj-getProperties();

var_dump($props);
var_dump($props[0]-isStatic());
var_dump($props[0]-isPrivate());
var_dump($props[0]-isPublic());
var_dump($props[0]-isProtected());

echo === 3rd test ===\n;

class test3 {
}

$Obj = new test3;
$Obj-value = 'value';
$RefObj = new ReflectionObject($Obj);

$props = $RefObj-getProperties();

var_dump($props);
var_dump($props[0]-isStatic());
var_dump($props[0]-isPrivate());
var_dump($props[0]-isPublic());
var_dump($props[0]-isProtected());

echo === 4th test ===\n;

class test5 {
private $value = 1;
}

class test4 extends test5{
}

$Obj = new test4;
$Obj-value = 'value';
$RefObj = new ReflectionObject($Obj);

$props = $RefObj-getProperties();

var_dump($props);
var_dump($props[0]-isStatic());
var_dump($props[0]-isPrivate());
var_dump($props[0]-isPublic());
var_dump($props[0]-isProtected());

echo Done\n;
?
--EXPECTF-- 
=== 1st test ===

Strict Standards: Creating default object from empty value in %s on line %d
array(1) {
  [0]=
  object(ReflectionProperty)#%d (2) {
[name]=
string(5) value
[class]=
string(8) stdClass
  }
}
bool(false)
bool(false)
bool(true)
bool(false)
=== 2nd test ===
array(1) {
  [0]=
  object(ReflectionProperty)#%d (2) {
[name]=
string(5) value
[class]=
string(5) test2
  }
}
bool(false)
bool(false)
bool(true)
bool(false)
=== 3rd test ===
array(1) {
  [0]=
  object(ReflectionProperty)#%d (2) {
[name]=
string(5) value
[class]=
string(5) test3
  }
}
bool(false)
bool(false)
bool(true)
bool(false)
=== 4th test ===
array(1) {
  [0]=
  object(ReflectionProperty)#%d (2) {
[name]=
string(5) value
[class]=
string(5) test4
  }
}
bool(false)
bool(false)
bool(true)
bool(false)
Done

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug39884.phpt

2006-12-22 Thread Ilia Alshanetsky
iliaa   Fri Dec 22 15:38:42 2006 UTC

  Modified files:  
/php-src/ext/reflection/tests   bug39884.phpt 
/php-src/ext/reflection php_reflection.c 
  Log:
  MFB: Fixed bug #39884 (ReflectionParameter::getClass() throws exception for
  type hint self).  
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug39884.phpt?r1=1.1r2=1.2diff_format=u
Index: php-src/ext/reflection/tests/bug39884.phpt
diff -u /dev/null php-src/ext/reflection/tests/bug39884.phpt:1.2
--- /dev/null   Fri Dec 22 15:38:42 2006
+++ php-src/ext/reflection/tests/bug39884.phpt  Fri Dec 22 15:38:42 2006
@@ -0,0 +1,22 @@
+--TEST--
+Bug #39884 (ReflectionParameter::getClass() throws exception for type hint 
self)
+--FILE--
+?php
+class stubParamTest
+{
+function paramTest(self $param)
+{
+// nothing to do
+}
+}
+$test1 = new stubParamTest();
+$test2 = new stubParamTest();
+$test1-paramTest($test2);
+$refParam = new ReflectionParameter(array('stubParamTest', 'paramTest'), 
'param');
+var_dump($refParam-getClass());
+?
+--EXPECT-- 
+object(ReflectionClass)#4 (1) {
+  [name]=
+  string(13) stubParamTest
+}
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.268r2=1.269diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.268 
php-src/ext/reflection/php_reflection.c:1.269
--- php-src/ext/reflection/php_reflection.c:1.268   Tue Dec 19 21:38:59 2006
+++ php-src/ext/reflection/php_reflection.c Fri Dec 22 15:38:42 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.268 2006/12/19 21:38:59 andrei Exp $ */
+/* $Id: php_reflection.c,v 1.269 2006/12/22 15:38:42 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2009,7 +2009,41 @@
GET_REFLECTION_OBJECT_PTR(param);
 
if (param-arg_info-class_name.v) {
-   if (zend_u_lookup_class_ex(UG(unicode)?IS_UNICODE:IS_STRING, 
param-arg_info-class_name, param-arg_info-class_name_len, 1, 1, pce 
TSRMLS_CC) == FAILURE) {
+
+   /* Class name is stored as a string, we might also get self 
or parent
+* - For self, simply use the function scope. If scope is 
NULL then
+*   the function is global and thus self does not make any 
sense
+*
+* - For parent, use the function scope's parent. If scope is 
NULL then
+*   the function is global and thus parent does not make any 
sense.
+*   If the parent is NULL then the class does not extend 
anything and
+*   thus parent does not make any sense, either.
+*
+* TODO: Think about moving these checks to the compiler or 
some sort of
+* lint-mode.
+*/
+   if (0 == strncmp(param-arg_info-class_name.v, self, 
sizeof(self)- 1)) {
+   zend_class_entry *ce= param-fptr-common.scope;
+   if (!ce) {
+  zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, 
+  Parameter uses 'self' as type hint but 
function is not a class member!);
+  return;
+   }
+   pce= ce;
+   } else if (0 == strncmp(param-arg_info-class_name.v, 
parent, sizeof(parent)- 1)) {
+   zend_class_entry *ce= param-fptr-common.scope;
+   if (!ce) {
+  zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, 
+  Parameter uses 'parent' as type hint but 
function is not a class member!);
+  return;
+   }
+   if (!ce-parent) {
+  zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, 
+  Parameter uses 'parent' as type hint 
although class does not have a parent!);
+  return;
+   }
+   pce= ce-parent;
+   } else if 
(zend_u_lookup_class_ex(UG(unicode)?IS_UNICODE:IS_STRING, 
param-arg_info-class_name, param-arg_info-class_name_len, 1, 1, pce 
TSRMLS_CC) == FAILURE) {
zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, 
Class %v does not exist, 
param-arg_info-class_name);
return;
@@ -4948,7 +4982,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.268 
2006/12/19 21:38:59 andrei Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.269 
2006/12/22 15:38:42 iliaa Exp $);
 
php_info_print_table_end();
 } /* }}} */

-- 
PHP CVS Mailing 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/standard array.c basic_functions.c string.c ZendEngine2 zend_API.h zend_execute_API.c

2006-12-19 Thread Andrei Zmievski
andrei  Tue Dec 19 21:39:00 2006 UTC

  Modified files:  
/ZendEngine2zend_API.h zend_execute_API.c 
/php-src/ext/reflection php_reflection.c 
/php-src/ext/standard   array.c basic_functions.c string.c 
  Log:
  - Marcus was too quick. Let's put type before zstr in the macros.
  - Also mark get_include_path() and restore_include_path() with U.
  
  http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_API.h?r1=1.274r2=1.275diff_format=u
Index: ZendEngine2/zend_API.h
diff -u ZendEngine2/zend_API.h:1.274 ZendEngine2/zend_API.h:1.275
--- ZendEngine2/zend_API.h:1.274Tue Dec 19 21:12:16 2006
+++ ZendEngine2/zend_API.h  Tue Dec 19 21:38:59 2006
@@ -18,7 +18,7 @@
+--+
 */
 
-/* $Id: zend_API.h,v 1.274 2006/12/19 21:12:16 helly Exp $ */
+/* $Id: zend_API.h,v 1.275 2006/12/19 21:38:59 andrei Exp $ */
 
 #ifndef ZEND_API_H
 #define ZEND_API_H
@@ -389,13 +389,13 @@
 #define add_assoc_zstr_ex(arg, key, key_len, type, str, duplicate) do { \
zval *___tmp; \
MAKE_STD_ZVAL(___tmp); \
-   ZVAL_ZSTR(___tmp, str, type, duplicate); \
+   ZVAL_ZSTR(___tmp, type, str, duplicate); \
add_assoc_zval_ex(arg, key, key_len, ___tmp); \
} while (0)
 #define add_assoc_zstrl_ex(arg, key, key_len, type, str, length, duplicate) do 
{ \
zval *___tmp; \
MAKE_STD_ZVAL(___tmp); \
-   ZVAL_ZSTRL(___tmp, str, type, length, duplicate); \
+   ZVAL_ZSTRL(___tmp, type, str, length, duplicate); \
add_assoc_zval_ex(arg, key, key_len, ___tmp); \
} while (0)
 #define add_assoc_text_ex(arg, key, key_len, str, duplicate) do { \
@@ -532,13 +532,13 @@
 #define add_ascii_assoc_zstr_ex(arg, key, key_len, type, str, duplicate) do { \
zval *___tmp; \
MAKE_STD_ZVAL(___tmp); \
-   ZVAL_ZSTR(___tmp, str, type, duplicate); \
+   ZVAL_ZSTR(___tmp, type, str, duplicate); \
add_ascii_assoc_zval_ex(arg, key, key_len, ___tmp); \
} while (0)
 #define add_ascii_assoc_zstrl_ex(arg, key, key_len, type, str, length, 
duplicate) do { \
zval *___tmp; \
MAKE_STD_ZVAL(___tmp); \
-   ZVAL_ZSTRL(___tmp, str, type, length, duplicate); \
+   ZVAL_ZSTRL(___tmp, type, str, length, duplicate); \
add_ascii_assoc_zval_ex(arg, key, key_len, ___tmp); \
} while (0)
 #define add_ascii_assoc_text_ex(arg, key, key_len, str, duplicate) do { \
@@ -676,13 +676,13 @@
 #define add_rt_assoc_zstr_ex(arg, key, key_len, type, str, duplicate) do { \
zval *___tmp; \
MAKE_STD_ZVAL(___tmp); \
-   ZVAL_ZSTR(___tmp, str, type, duplicate); \
+   ZVAL_ZSTR(___tmp, type, str, duplicate); \
add_rt_assoc_zval_ex(arg, key, key_len, ___tmp); \
} while (0)
 #define add_rt_assoc_zstrl_ex(arg, key, key_len, type, str, length, duplicate) 
do { \
zval *___tmp; \
MAKE_STD_ZVAL(___tmp); \
-   ZVAL_ZSTRL(___tmp, str, type, length, duplicate); \
+   ZVAL_ZSTRL(___tmp, type, str, length, duplicate); \
add_rt_assoc_zval_ex(arg, key, key_len, ___tmp); \
} while (0)
 #define add_rt_assoc_text_ex(arg, key, key_len, str, duplicate) do { \
@@ -820,13 +820,13 @@
 #define add_utf8_assoc_zstr_ex(arg, key, key_len, type, str, duplicate) do { \
zval *___tmp; \
MAKE_STD_ZVAL(___tmp); \
-   ZVAL_ZSTR(___tmp, str, type, duplicate); \
+   ZVAL_ZSTR(___tmp, type, str, duplicate); \
add_utf8_assoc_zval_ex(arg, key, key_len, ___tmp); \
} while (0)
 #define add_utf8_assoc_zstrl_ex(arg, key, key_len, type, str, length, 
duplicate) do { \
zval *___tmp; \
MAKE_STD_ZVAL(___tmp); \
-   ZVAL_ZSTRL(___tmp, str, type, length, duplicate); \
+   ZVAL_ZSTRL(___tmp, type, str, length, duplicate); \
add_utf8_assoc_zval_ex(arg, key, key_len, ___tmp); \
} while (0)
 #define add_utf8_assoc_text_ex(arg, key, key_len, str, duplicate) do { \
@@ -972,14 +972,14 @@
 #define add_utf8_property_zstr_ex(arg, key, key_len, type, str, duplicate) do 
{ \
zval *___tmp; \
MAKE_STD_ZVAL(___tmp); \
-   ZVAL_ZSTR(___tmp, str, type, duplicate); \
+   ZVAL_ZSTR(___tmp, type, str, duplicate); \
add_utf8_property_zval_ex(arg, key, key_len, ___tmp TSRMLS_CC); 
\
zval_ptr_dtor(___tmp); /* write_property will add 1 to 
refcount */ \
} while (0)
 #define add_utf8_property_zstrl_ex(arg, key, key_len, type, str, length, 
duplicate) do { \
zval *___tmp; \
MAKE_STD_ZVAL(___tmp); \
-   

Re: [PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/standard array.c basic_functions.c string.c ZendEngine2 zend_API.h zend_execute_API.c

2006-12-19 Thread Marcus Boerger
Hello Andrei,

  you're right again. This versionis actually in line with the order of
zend_u_hash*(), too.

best regards
marcus

Tuesday, December 19, 2006, 10:39:00 PM, you wrote:

 andrei  Tue Dec 19 21:39:00 2006 UTC

   Modified files:  
 /ZendEngine2zend_API.h zend_execute_API.c 
 /php-src/ext/reflection php_reflection.c 
 /php-src/ext/standard   array.c basic_functions.c string.c 
   Log:
   - Marcus was too quick. Let's put type before zstr in the macros.
   - Also mark get_include_path() and restore_include_path() with U.
   
   



Best regards,
 Marcus

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c ZendEngine2 zend.h zend_API.c zend_API.h zend_compile.c zend_compile.h zend_globals.h zend_language_scanner.l

2006-10-27 Thread Andrei Zmievski
andrei  Fri Oct 27 21:22:06 2006 UTC

  Modified files:  
/ZendEngine2zend.h zend_API.c zend_API.h zend_compile.c 
zend_compile.h zend_globals.h zend_language_scanner.l 
/php-src/ext/reflection php_reflection.c 
  Log:
  Turn doc comments into zstr strings with corresponding adjustments.
  
  http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.h?r1=1.329r2=1.330diff_format=u
Index: ZendEngine2/zend.h
diff -u ZendEngine2/zend.h:1.329 ZendEngine2/zend.h:1.330
--- ZendEngine2/zend.h:1.329Mon Oct 16 21:13:13 2006
+++ ZendEngine2/zend.h  Fri Oct 27 21:22:05 2006
@@ -17,7 +17,7 @@
+--+
 */
 
-/* $Id: zend.h,v 1.329 2006/10/16 21:13:13 andrei Exp $ */
+/* $Id: zend.h,v 1.330 2006/10/27 21:22:05 andrei Exp $ */
 
 #ifndef ZEND_H
 #define ZEND_H
@@ -399,7 +399,7 @@
char *filename;
zend_uint line_start;
zend_uint line_end;
-   char *doc_comment;
+   zstr doc_comment;
zend_uint doc_comment_len;
 
struct _zend_module_entry *module;
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_API.c?r1=1.413r2=1.414diff_format=u
Index: ZendEngine2/zend_API.c
diff -u ZendEngine2/zend_API.c:1.413 ZendEngine2/zend_API.c:1.414
--- ZendEngine2/zend_API.c:1.413Tue Oct 17 22:15:19 2006
+++ ZendEngine2/zend_API.c  Fri Oct 27 21:22:05 2006
@@ -18,7 +18,7 @@
+--+
 */
 
-/* $Id: zend_API.c,v 1.413 2006/10/17 22:15:19 andrei Exp $ */
+/* $Id: zend_API.c,v 1.414 2006/10/27 21:22:05 andrei Exp $ */
 
 #include zend.h
 #include zend_execute.h
@@ -2902,7 +2902,7 @@
return module-version;
 }
 
-ZEND_API int zend_u_declare_property_ex(zend_class_entry *ce, zend_uchar type, 
zstr name, int name_length, zval *property, int access_type, char *doc_comment, 
int doc_comment_len TSRMLS_DC)
+ZEND_API int zend_u_declare_property_ex(zend_class_entry *ce, zend_uchar type, 
zstr name, int name_length, zval *property, int access_type, zstr doc_comment, 
int doc_comment_len TSRMLS_DC)
 {
zend_property_info property_info;
HashTable *target_symbol_table;
@@ -2977,19 +2977,19 @@
return SUCCESS;
 }
 
-ZEND_API int zend_declare_property_ex(zend_class_entry *ce, char *name, int 
name_length, zval *property, int access_type, char *doc_comment, int 
doc_comment_len TSRMLS_DC)
+ZEND_API int zend_declare_property_ex(zend_class_entry *ce, char *name, int 
name_length, zval *property, int access_type, zstr doc_comment, int 
doc_comment_len TSRMLS_DC)
 {
-   return zend_u_declare_property_ex(ce, IS_STRING, ZSTR(name), 
name_length, property, access_type, NULL, 0 TSRMLS_CC);
+   return zend_u_declare_property_ex(ce, IS_STRING, ZSTR(name), 
name_length, property, access_type, doc_comment, doc_comment_len TSRMLS_CC);
 }
 
 ZEND_API int zend_u_declare_property(zend_class_entry *ce, zend_uchar type, 
zstr name, int name_length, zval *property, int access_type TSRMLS_DC)
 {
-   return zend_u_declare_property_ex(ce, type, name, name_length, 
property, access_type, NULL, 0 TSRMLS_CC);
+   return zend_u_declare_property_ex(ce, type, name, name_length, 
property, access_type, NULL_ZSTR, 0 TSRMLS_CC);
 }
 
 ZEND_API int zend_declare_property(zend_class_entry *ce, char *name, int 
name_length, zval *property, int access_type TSRMLS_DC)
 {
-   return zend_u_declare_property_ex(ce, IS_STRING, ZSTR(name), 
name_length, property, access_type, NULL, 0 TSRMLS_CC);
+   return zend_u_declare_property_ex(ce, IS_STRING, ZSTR(name), 
name_length, property, access_type, NULL_ZSTR, 0 TSRMLS_CC);
 }
 
 ZEND_API int zend_declare_property_null(zend_class_entry *ce, char *name, int 
name_length, int access_type TSRMLS_DC)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_API.h?r1=1.267r2=1.268diff_format=u
Index: ZendEngine2/zend_API.h
diff -u ZendEngine2/zend_API.h:1.267 ZendEngine2/zend_API.h:1.268
--- ZendEngine2/zend_API.h:1.267Tue Oct 24 12:46:33 2006
+++ ZendEngine2/zend_API.h  Fri Oct 27 21:22:05 2006
@@ -18,7 +18,7 @@
+--+
 */
 
-/* $Id: zend_API.h,v 1.267 2006/10/24 12:46:33 tony2001 Exp $ */
+/* $Id: zend_API.h,v 1.268 2006/10/27 21:22:05 andrei Exp $ */
 
 #ifndef ZEND_API_H
 #define ZEND_API_H
@@ -224,7 +224,7 @@
 ZEND_API char *zend_get_module_version(char *module_name);
 ZEND_API int zend_get_module_started(char *module_name);
 ZEND_API int zend_declare_property(zend_class_entry *ce, char *name, int 
name_length, zval *property, int access_type TSRMLS_DC);
-ZEND_API int zend_declare_property_ex(zend_class_entry *ce, char *name, int 
name_length, zval *property, int access_type, char *doc_comment, int 
doc_comment_len TSRMLS_DC);
+ZEND_API int zend_declare_property_ex(zend_class_entry *ce, char *name, int 
name_length, zval *property, int access_type, zstr doc_comment, int 
doc_comment_len 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-10-24 Thread Andrei Zmievski
andrei  Tue Oct 24 17:37:17 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Mark reflection methods as Unicode-compliant (except for FIXME parts).
  
  http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.264r2=1.265diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.264 
php-src/ext/reflection/php_reflection.c:1.265
--- php-src/ext/reflection/php_reflection.c:1.264   Mon Oct 23 20:00:40 2006
+++ php-src/ext/reflection/php_reflection.c Tue Oct 24 17:37:17 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.264 2006/10/23 20:00:40 andrei Exp $ */
+/* $Id: php_reflection.c,v 1.265 2006/10/24 17:37:17 andrei Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1292,7 +1292,7 @@
 }
 /* }}} */
 
-/* {{{ proto public static mixed Reflection::export(Reflector r [, bool 
return])
+/* {{{ proto public static mixed Reflection::export(Reflector r [, bool 
return]) U
Exports a reflection object. Returns the output if TRUE is specified for 
return, printing it otherwise. */
 ZEND_METHOD(reflection, export)
 {
@@ -1330,7 +1330,7 @@
 }
 /* }}} */
 
-/* {{{ proto public static array Reflection::getModifierNames(int modifiers)
+/* {{{ proto public static array Reflection::getModifierNames(int modifiers) U
Returns an array of modifier names */
 ZEND_METHOD(reflection, getModifierNames)
 {
@@ -1368,7 +1368,7 @@
 }
 /* }}} */
 
-/* {{{ proto public static mixed ReflectionFunction::export(string name [, 
bool return])
+/* {{{ proto public static mixed ReflectionFunction::export(string name [, 
bool return]) U
Exports a reflection object. Returns the output if TRUE is specified for 
return, printing it otherwise. */
 ZEND_METHOD(reflection_function, export)
 {
@@ -1376,7 +1376,7 @@
 }
 /* }}} */
 
-/* {{{ proto public void ReflectionFunction::__construct(string name)
+/* {{{ proto public void ReflectionFunction::__construct(string name) U
Constructor. Throws an Exception in case the given function does not exist 
*/
 ZEND_METHOD(reflection_function, __construct)
 {
@@ -1416,7 +1416,7 @@
 }
 /* }}} */
 
-/* {{{ proto public string ReflectionFunction::__toString()
+/* {{{ proto public string ReflectionFunction::__toString() U
Returns a string representation */
 ZEND_METHOD(reflection_function, __toString)
 {
@@ -1428,11 +1428,11 @@
GET_REFLECTION_OBJECT_PTR(fptr);
string_init(str);
_function_string(str, fptr, intern-ce,  TSRMLS_CC);
-   RETURN_RT_STRINGL(str.string, str.len - 1, ZSTR_AUTOFREE);
+   RETURN_U_STRINGL(ZEND_U_CONVERTER(UG(output_encoding_conv)), 
str.string, str.len - 1, ZSTR_AUTOFREE);
 }
 /* }}} */
 
-/* {{{ proto public string ReflectionFunction::getName()
+/* {{{ proto public string ReflectionFunction::getName() U
Returns this function's name */
 ZEND_METHOD(reflection, function_getName)
 {
@@ -1441,7 +1441,7 @@
 }
 /* }}} */
 
-/* {{{ proto public bool ReflectionFunction::isInternal()
+/* {{{ proto public bool ReflectionFunction::isInternal() U
Returns whether this is an internal function */
 ZEND_METHOD(reflection, function_isInternal)
 {
@@ -1454,7 +1454,7 @@
 }
 /* }}} */
 
-/* {{{ proto public bool ReflectionFunction::isUserDefined()
+/* {{{ proto public bool ReflectionFunction::isUserDefined() U
Returns whether this is an user-defined function */
 ZEND_METHOD(reflection_function, isUserDefined)
 {
@@ -1467,7 +1467,7 @@
 }
 /* }}} */
 
-/* {{{ proto public bool ReflectionFunction::isDisabled()
+/* {{{ proto public bool ReflectionFunction::isDisabled() U
Returns whether this function has been disabled or not */
 ZEND_METHOD(reflection_function, isDisabled)
 {
@@ -1480,7 +1480,7 @@
 }
 /* }}} */
 
-/* {{{ proto public string ReflectionFunction::getFileName()
+/* {{{ proto public string ReflectionFunction::getFileName() U
Returns the filename of the file this function was declared in */
 ZEND_METHOD(reflection_function, getFileName)
 {
@@ -1496,7 +1496,7 @@
 }
 /* }}} */
 
-/* {{{ proto public int ReflectionFunction::getStartLine()
+/* {{{ proto public int ReflectionFunction::getStartLine() U
Returns the line this function's declaration starts at */
 ZEND_METHOD(reflection_function, getStartLine)
 {
@@ -1512,7 +1512,7 @@
 }
 /* }}} */
 
-/* {{{ proto public int ReflectionFunction::getEndLine()
+/* {{{ proto public int ReflectionFunction::getEndLine() U
Returns the line this function's declaration ends at */
 ZEND_METHOD(reflection_function, getEndLine)
 {
@@ -1528,7 +1528,7 @@
 }
 /* }}} */
 
-/* {{{ proto public string ReflectionFunction::getDocComment()
+/* {{{ proto public string ReflectionFunction::getDocComment() U
Returns the doc comment for this function */
 ZEND_METHOD(reflection_function, getDocComment)
 {
@@ -1538,13 +1538,17 @@

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-10-23 Thread Andrei Zmievski
andrei  Mon Oct 23 20:00:40 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Fix remaining Unicode issues.
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.263r2=1.264diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.263 
php-src/ext/reflection/php_reflection.c:1.264
--- php-src/ext/reflection/php_reflection.c:1.263   Wed Oct 18 16:34:25 2006
+++ php-src/ext/reflection/php_reflection.c Mon Oct 23 20:00:40 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.263 2006/10/18 16:34:25 johannes Exp $ */
+/* $Id: php_reflection.c,v 1.264 2006/10/23 20:00:40 andrei Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2170,26 +2170,33 @@
zend_class_entry *ce;
zend_function *mptr;
zstr name_str;
-   char *tmp;
+   zstr tmp;
int name_len, tmp_len;
zval ztmp;
zend_uchar type;
 
-   /* FIXME: Unicode support??? */
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() 
TSRMLS_CC, zt, classname, name_str, name_len, type) == FAILURE) {
-   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, s, 
name_str, name_len) == FAILURE) {
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, t, 
name_str, name_len, type) == FAILURE) {
return;
}
-   if ((tmp = strstr(name_str.s, ::)) == NULL) {
-   zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, Invalid method name %s, name_str);
+   if ((type == IS_UNICODE  (tmp.u = u_strstr(name_str.u, 
u_doublecolon)) == NULL) ||
+   (type == IS_STRING   (tmp.s =   strstr(name_str.s, 
::)) == NULL)) {
+   zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, Invalid method name %R, type, name_str);
return;
}
-   type = IS_STRING;
classname = ztmp;
-   tmp_len = tmp - name_str.s;
-   ZVAL_STRINGL(classname, name_str.s, tmp_len, 1);
+   if (type == IS_UNICODE) {
+   tmp_len = tmp.u - name_str.u;
+   } else {
+   tmp_len = tmp.s - name_str.s;
+   }
+   ZVAL_ZSTRL(classname, name_str, tmp_len, type, 1);
name_len = name_len - (tmp_len + 2);
-   name_str.s = tmp + 2;
+   if (type == IS_UNICODE) {
+   name_str.u = tmp.u + 2;
+   } else {
+   name_str.s = tmp.s + 2;
+   }
}
 
object = getThis();
@@ -3121,8 +3128,8 @@
zend_class_entry *ce, **pce;
zend_property_info *property_info;
zstr name, classname;
-   char *tmp; 
-   int name_len, classname_len;
+   zstr tmp; 
+   int name_len, classname_len, tmp_len;
zend_uchar name_type;
 
METHOD_NOTSTATIC(reflection_class_ptr);
@@ -3131,17 +3138,28 @@
}
 
GET_REFLECTION_OBJECT_PTR(ce);
-   if (zend_u_hash_find(ce-properties_info, name_type, name, name_len + 
1, (void**) property_info) == SUCCESS  (property_info-flags  
ZEND_ACC_SHADOW) == 0) {
-   reflection_property_factory(ce, property_info, return_value 
TSRMLS_CC);
+   if (zend_u_hash_find(ce-properties_info, name_type, name, name_len + 
1, (void**) property_info) == SUCCESS) {
+   if ((property_info-flags  ZEND_ACC_SHADOW) == 0) {
+   reflection_property_factory(ce, property_info, 
return_value TSRMLS_CC);
+   }
return;
}
-   /* FIXME: Unicode support??? */
-   if ((tmp = strstr(name.s, ::)) != NULL) {
-   classname_len = tmp - name.s;
-   classname.s = zend_str_tolower_dup(name.s, classname_len);
-   classname.s[classname_len] = '\0';
+   if ((name_type == IS_UNICODE  (tmp.u = u_strstr(name.u, 
u_doublecolon)) != NULL) ||
+   (name_type == IS_STRING   (tmp.s =   strstr(name.s, ::)) != 
NULL)) {
+
+   if (name_type == IS_UNICODE) {
+   classname_len = tmp.u - name.u;
+   } else {
+   classname_len = tmp.s - name.s;
+   }
+   classname = zend_u_str_case_fold(name_type, name, 
classname_len, 1, tmp_len);
+   classname_len = tmp_len;
name_len = name_len - (classname_len + 2);
-   name.s = tmp + 2;
+   if (name_type == IS_UNICODE) {
+   name.u = tmp.u + 2;
+   } else {
+   name.s = tmp.s + 2;
+   }
 
if (zend_u_lookup_class(name_type, classname, classname_len, 
pce TSRMLS_CC) == FAILURE) 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests 005.phpt 009.phpt 010.phpt 011.phpt 012.phpt 013.phpt 014.phpt 015.phpt 016.phpt 017.phpt 018.phpt 019.phpt 020.phpt 021.

2006-10-17 Thread Dmitry Stogov
dmitry  Tue Oct 17 11:11:45 2006 UTC

  Added files: 
/php-src/ext/reflection/tests   010.phpt 011.phpt 012.phpt 013.phpt 
014.phpt 015.phpt 016.phpt 017.phpt 
018.phpt 019.phpt 020.phpt 021.phpt 
022.phpt 023.phpt 024.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   005.phpt 009.phpt 
  Log:
  Unicode support. (Two more places must be fixed. Look for FIXME comments.)
  
  http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.261r2=1.262diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.261 
php-src/ext/reflection/php_reflection.c:1.262
--- php-src/ext/reflection/php_reflection.c:1.261   Wed Oct 11 15:51:17 2006
+++ php-src/ext/reflection/php_reflection.c Tue Oct 17 11:11:45 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.261 2006/10/11 15:51:17 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.262 2006/10/17 11:11:45 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -200,7 +200,7 @@
 {
zval **value;
 
-   if (zend_hash_find(Z_OBJPROP_P(object), name, name_len, (void **) 
value) == FAILURE) {
+   if (zend_ascii_hash_find(Z_OBJPROP_P(object), name, name_len, (void **) 
value) == FAILURE) {
RETURN_FALSE;
}
 
@@ -276,9 +276,9 @@
return object;
 }
 
-static void _const_string(string *str, char *name, zval *value, char *indent 
TSRMLS_DC);
+static void _const_string(string *str, zstr name, zval *value, char *indent 
TSRMLS_DC);
 static void _function_string(string *str, zend_function *fptr, 
zend_class_entry *scope, char *indent TSRMLS_DC);
-static void _property_string(string *str, zend_property_info *prop, char 
*prop_name, char* indent TSRMLS_DC);
+static void _property_string(string *str, zend_property_info *prop, zstr 
prop_name, char* indent TSRMLS_DC);
 static void _class_string(string *str, zend_class_entry *ce, zval *obj, char 
*indent TSRMLS_DC);
 static void _extension_string(string *str, zend_module_entry *module, char 
*indent TSRMLS_DC);
 
@@ -360,7 +360,7 @@
while 
(zend_hash_get_current_data_ex(ce-constants_table, (void **) value, pos) == 
SUCCESS) {

zend_hash_get_current_key_ex(ce-constants_table, key, key_len, num_index, 
0, pos);
 
-   _const_string(str, key.s, *value, indent 
TSRMLS_CC);
+   _const_string(str, key, *value, indent 
TSRMLS_CC);
zend_hash_move_forward_ex(ce-constants_table, 
pos);
}
}
@@ -397,7 +397,7 @@
 
while 
(zend_hash_get_current_data_ex(ce-properties_info, (void **) prop, pos) == 
SUCCESS) {
if ((prop-flags  ZEND_ACC_STATIC)  
!(prop-flags  ZEND_ACC_SHADOW)) {
-   _property_string(str, prop, NULL, 
sub_indent.string TSRMLS_CC);
+   _property_string(str, prop, NULL_ZSTR, 
sub_indent.string TSRMLS_CC);
}
 
zend_hash_move_forward_ex(ce-properties_info, 
pos);
@@ -457,7 +457,7 @@
 
while 
(zend_hash_get_current_data_ex(ce-properties_info, (void **) prop, pos) == 
SUCCESS) {
if (!(prop-flags  
(ZEND_ACC_STATIC|ZEND_ACC_SHADOW))) {
-   _property_string(str, prop, NULL, 
sub_indent.string TSRMLS_CC);
+   _property_string(str, prop, NULL_ZSTR, 
sub_indent.string TSRMLS_CC);
}
zend_hash_move_forward_ex(ce-properties_info, 
pos);
}
@@ -479,16 +479,17 @@
while (zend_hash_get_current_data_ex(properties, (void **) 
prop, pos) == SUCCESS) {
zstr prop_name;
uint  prop_name_size;
+   zend_uchar prop_type;
ulong index;
 
-   if (zend_hash_get_current_key_ex(properties, 
prop_name, prop_name_size, index, 1, pos) == HASH_KEY_IS_STRING) {
-   if (prop_name_size  prop_name.s[0]) { /* skip 
all private and protected properties */
-   if 
(!zend_hash_quick_exists(ce-properties_info, prop_name.s, prop_name_size, 
zend_get_hash_value(prop_name.s, prop_name_size))) {
+   if ((prop_type = 
zend_hash_get_current_key_ex(properties, prop_name, prop_name_size, index, 
0, pos)) == (UG(unicode)?HASH_KEY_IS_UNICODE:HASH_KEY_IS_STRING)) {
+  

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests 009.phpt bug39067.phpt

2006-10-11 Thread Antony Dovgal
tony2001Wed Oct 11 15:51:17 2006 UTC

  Added files: 
/php-src/ext/reflection/tests   009.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   bug39067.phpt 
  Log:
  fix #39125 (Memleak when reflecting non-existing class/method)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.260r2=1.261diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.260 
php-src/ext/reflection/php_reflection.c:1.261
--- php-src/ext/reflection/php_reflection.c:1.260   Fri Oct  6 18:02:50 2006
+++ php-src/ext/reflection/php_reflection.c Wed Oct 11 15:51:17 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.260 2006/10/06 18:02:50 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.261 2006/10/11 15:51:17 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2180,6 +2180,7 @@
}
/* FIXME: Unicode support??? */
if ((tmp = strstr(name_str.s, ::)) == NULL) {
+   zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, Invalid method name %s, name_str);
return;
}
type = IS_STRING;
@@ -2203,6 +2204,9 @@
if (zend_u_lookup_class(Z_TYPE_P(classname), 
Z_UNIVAL_P(classname), Z_UNILEN_P(classname), pce TSRMLS_CC) == FAILURE) {

zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
Class %v does not exist, 
Z_UNIVAL_P(classname)); 
+   if (classname == ztmp) {
+   zval_dtor(ztmp);
+   }
return;
}
ce = *pce;
@@ -2213,6 +2217,9 @@
break;
 
default:
+   if (classname == ztmp) {
+   zval_dtor(ztmp);
+   }
_DO_THROW(The parameter class is expected to be either 
a string or an object);
/* returns out of this function */
}
@@ -4913,7 +4920,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.260 
2006/10/06 18:02:50 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.261 
2006/10/11 15:51:17 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug39067.phpt?r1=1.2r2=1.3diff_format=u
Index: php-src/ext/reflection/tests/bug39067.phpt
diff -u php-src/ext/reflection/tests/bug39067.phpt:1.2 
php-src/ext/reflection/tests/bug39067.phpt:1.3
--- php-src/ext/reflection/tests/bug39067.phpt:1.2  Fri Oct  6 18:02:50 2006
+++ php-src/ext/reflection/tests/bug39067.phpt  Wed Oct 11 15:51:17 2006
@@ -47,5 +47,5 @@
 unicode(1) C
 unicode(1) B
 unicode(1) A
-unicode(4) Test2
+unicode(5) Test2
 Done

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/009.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/009.phpt
+++ php-src/ext/reflection/tests/009.phpt
--TEST--
ReflectionMethod::__construct() tests
--FILE--
?php

$a = array(, 1, ::, a::, ::b, a::b);

foreach ($a as $val) {
try {
new ReflectionMethod($val);
} catch (Exception $e) {
var_dump($e-getMessage());
}
}
 
$a = array(, 1, );
$b = array(, , 1);
 
foreach ($a as $key=$val) {
try {
new ReflectionMethod($val, $b[$key]);
} catch (Exception $e) {
var_dump($e-getMessage());
}
}

echo Done\n;
?
--EXPECTF-- 
string(20) Invalid method name 
string(21) Invalid method name 1
string(21) Class  does not exist
string(22) Class a does not exist
string(21) Class  does not exist
string(22) Class a does not exist
string(21) Class  does not exist
string(66) The parameter class is expected to be either a string or an object
string(21) Class  does not exist
Done

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug39067.phpt

2006-10-06 Thread Antony Dovgal
tony2001Fri Oct  6 18:02:51 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   bug39067.phpt 
  Log:
  more improvements
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.259r2=1.260diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.259 
php-src/ext/reflection/php_reflection.c:1.260
--- php-src/ext/reflection/php_reflection.c:1.259   Fri Oct  6 17:34:56 2006
+++ php-src/ext/reflection/php_reflection.c Fri Oct  6 18:02:50 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.259 2006/10/06 17:34:56 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.260 2006/10/06 18:02:50 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4099,12 +4099,12 @@
prop_name_len = USTR_LEN(prop_name);
ce = tmp_ce = ref-ce;
while (tmp_ce  zend_u_hash_find(tmp_ce-properties_info, 
UG(unicode)?IS_UNICODE:IS_STRING, prop_name, prop_name_len + 1, (void **) 
tmp_info) == SUCCESS) {
-   ce = tmp_ce;
-   tmp_ce = tmp_ce-parent;
if (tmp_info-flags  ZEND_ACC_PRIVATE) {
/* it's a private property, so it can't be inherited */
break;
}
+   ce = tmp_ce;
+   tmp_ce = tmp_ce-parent;
}
 
zend_reflection_class_factory(ce, return_value TSRMLS_CC);
@@ -4913,7 +4913,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.259 
2006/10/06 17:34:56 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.260 
2006/10/06 18:02:50 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug39067.phpt?r1=1.1r2=1.2diff_format=u
Index: php-src/ext/reflection/tests/bug39067.phpt
diff -u php-src/ext/reflection/tests/bug39067.phpt:1.1 
php-src/ext/reflection/tests/bug39067.phpt:1.2
--- php-src/ext/reflection/tests/bug39067.phpt:1.1  Fri Oct  6 17:34:56 2006
+++ php-src/ext/reflection/tests/bug39067.phpt  Fri Oct  6 18:02:50 2006
@@ -24,15 +24,28 @@
 $rc = new ReflectionClass('A');
 var_dump($rc-getProperty('x')-getDeclaringClass()-getName());
 
+class Test {
+   private $x;
+}
+
+class Test2 extends Test {
+   public $x;
+}
+
+$rc = new ReflectionClass('Test2');
+var_dump($rc-getProperty('x')-getDeclaringClass()-getName());
+
 echo Done\n;
 ?
 --EXPECTF--
 string(1) C
 string(1) B
 string(1) A
+string(5) Test2
 Done
 --UEXPECTF--
 unicode(1) C
 unicode(1) B
 unicode(1) A
+unicode(4) Test2
 Done

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



Re: [PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug39067.phpt

2006-10-06 Thread Andrei Zmievski
Any idea if ext/reflection is Unicode-ready or how much work it needs  
to get there?


-Andrei

On Oct 6, 2006, at 11:02 AM, Antony Dovgal wrote:


tony2001Fri Oct  6 18:02:51 2006 UTC

  Modified files:
/php-src/ext/reflection php_reflection.c
/php-src/ext/reflection/tests   bug39067.phpt
  Log:
  more improvements


http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c? 
r1=1.259r2=1.260diff_format=u

Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.259  
php-src/ext/reflection/php_reflection.c:1.260
--- php-src/ext/reflection/php_reflection.c:1.259	Fri Oct  6 17:34:56  
2006

+++ php-src/ext/reflection/php_reflection.c Fri Oct  6 18:02:50 2006
@@ -20,7 +20,7 @@
 
+-- 
+

 */

-/* $Id: php_reflection.c,v 1.259 2006/10/06 17:34:56 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.260 2006/10/06 18:02:50 tony2001 Exp $ */

 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4099,12 +4099,12 @@
prop_name_len = USTR_LEN(prop_name);
ce = tmp_ce = ref-ce;
 	while (tmp_ce  zend_u_hash_find(tmp_ce-properties_info,  
UG(unicode)?IS_UNICODE:IS_STRING, prop_name, prop_name_len + 1, (void  
**) tmp_info) == SUCCESS) {

-   ce = tmp_ce;
-   tmp_ce = tmp_ce-parent;
if (tmp_info-flags  ZEND_ACC_PRIVATE) {
/* it's a private property, so it can't be inherited */
break;
}
+   ce = tmp_ce;
+   tmp_ce = tmp_ce-parent;
}

zend_reflection_class_factory(ce, return_value TSRMLS_CC);
@@ -4913,7 +4913,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);

-	php_info_print_table_row(2, Version, $Id: php_reflection.c,v  
1.259 2006/10/06 17:34:56 tony2001 Exp $);
+	php_info_print_table_row(2, Version, $Id: php_reflection.c,v  
1.260 2006/10/06 18:02:50 tony2001 Exp $);


php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/ 
bug39067.phpt?r1=1.1r2=1.2diff_format=u

Index: php-src/ext/reflection/tests/bug39067.phpt
diff -u php-src/ext/reflection/tests/bug39067.phpt:1.1  
php-src/ext/reflection/tests/bug39067.phpt:1.2
--- php-src/ext/reflection/tests/bug39067.phpt:1.1	Fri Oct  6 17:34:56  
2006

+++ php-src/ext/reflection/tests/bug39067.phpt  Fri Oct  6 18:02:50 2006
@@ -24,15 +24,28 @@
 $rc = new ReflectionClass('A');
 var_dump($rc-getProperty('x')-getDeclaringClass()-getName());

+class Test {
+   private $x;
+}
+
+class Test2 extends Test {
+   public $x;
+}
+
+$rc = new ReflectionClass('Test2');
+var_dump($rc-getProperty('x')-getDeclaringClass()-getName());
+
 echo Done\n;
 ?
 --EXPECTF--
 string(1) C
 string(1) B
 string(1) A
+string(5) Test2
 Done
 --UEXPECTF--
 unicode(1) C
 unicode(1) B
 unicode(1) A
+unicode(4) Test2
 Done

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


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



Re: [PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug39067.phpt

2006-10-06 Thread Antony Dovgal

On 10/06/2006 10:14 PM, Andrei Zmievski wrote:
Any idea if ext/reflection is Unicode-ready or how much work it needs  
to get there?


I don't think it should be something complex, but no it's not ready yet.

--
Wbr, 
Antony Dovgal


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



Re: [PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug39067.phpt

2006-10-06 Thread Johannes Schlüter

Hi Andrei,

most parts off it work in unicode mode, there are a few places which 
need little work, see Dmitry's FIXME: Unicode support comments to get 
an idea. Basically I'm in writing tests and writing a patch but 
currently have less time than expected...


johannes

Andrei Zmievski wrote:
Any idea if ext/reflection is Unicode-ready or how much work it needs to 
get there?


-Andrei

On Oct 6, 2006, at 11:02 AM, Antony Dovgal wrote:


tony2001Fri Oct  6 18:02:51 2006 UTC

  Modified files:
/php-src/ext/reflectionphp_reflection.c
/php-src/ext/reflection/testsbug39067.phpt
  Log:
  more improvements


http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.259r2=1.260diff_format=u 


Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.259 
php-src/ext/reflection/php_reflection.c:1.260
--- php-src/ext/reflection/php_reflection.c:1.259Fri Oct  6 
17:34:56 2006

+++ php-src/ext/reflection/php_reflection.cFri Oct  6 18:02:50 2006
@@ -20,7 +20,7 @@

+--+

 */

-/* $Id: php_reflection.c,v 1.259 2006/10/06 17:34:56 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.260 2006/10/06 18:02:50 tony2001 Exp $ */

 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4099,12 +4099,12 @@
 prop_name_len = USTR_LEN(prop_name);
 ce = tmp_ce = ref-ce;
 while (tmp_ce  zend_u_hash_find(tmp_ce-properties_info, 
UG(unicode)?IS_UNICODE:IS_STRING, prop_name, prop_name_len + 1, (void 
**) tmp_info) == SUCCESS) {

-ce = tmp_ce;
-tmp_ce = tmp_ce-parent;
 if (tmp_info-flags  ZEND_ACC_PRIVATE) {
 /* it's a private property, so it can't be inherited */
 break;
 }
+ce = tmp_ce;
+tmp_ce = tmp_ce-parent;
 }

 zend_reflection_class_factory(ce, return_value TSRMLS_CC);
@@ -4913,7 +4913,7 @@
 php_info_print_table_start();
 php_info_print_table_header(2, Reflection, enabled);

-php_info_print_table_row(2, Version, $Id: php_reflection.c,v 
1.259 2006/10/06 17:34:56 tony2001 Exp $);
+php_info_print_table_row(2, Version, $Id: php_reflection.c,v 
1.260 2006/10/06 18:02:50 tony2001 Exp $);


 php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug39067.phpt?r1=1.1r2=1.2diff_format=u 


Index: php-src/ext/reflection/tests/bug39067.phpt
diff -u php-src/ext/reflection/tests/bug39067.phpt:1.1 
php-src/ext/reflection/tests/bug39067.phpt:1.2
--- php-src/ext/reflection/tests/bug39067.phpt:1.1Fri Oct  6 
17:34:56 2006
+++ php-src/ext/reflection/tests/bug39067.phptFri Oct  6 18:02:50 
2006

@@ -24,15 +24,28 @@
 $rc = new ReflectionClass('A');
 var_dump($rc-getProperty('x')-getDeclaringClass()-getName());

+class Test {
+private $x;
+}
+
+class Test2 extends Test {
+public $x;
+}
+
+$rc = new ReflectionClass('Test2');
+var_dump($rc-getProperty('x')-getDeclaringClass()-getName());
+
 echo Done\n;
 ?
 --EXPECTF--   
 string(1) C

 string(1) B
 string(1) A
+string(5) Test2
 Done
 --UEXPECTF--
 unicode(1) C
 unicode(1) B
 unicode(1) A
+unicode(4) Test2
 Done

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


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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-10-03 Thread Dmitry Stogov
dmitry  Tue Oct  3 09:59:24 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Fixed bug #38942 (Double old-style-ctor inheritance)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.257r2=1.258diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.257 
php-src/ext/reflection/php_reflection.c:1.258
--- php-src/ext/reflection/php_reflection.c:1.257   Mon Oct  2 12:15:47 2006
+++ php-src/ext/reflection/php_reflection.c Tue Oct  3 09:59:24 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.257 2006/10/02 12:15:47 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.258 2006/10/03 09:59:24 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -502,11 +502,13 @@
/* Non static methods */
if (ce-function_table) {
count = zend_hash_num_elements(ce-function_table) - 
count_static_funcs;
-   string_printf(str, \n%s  - Methods [%d] {, indent, count);
if (count  0) {
HashPosition pos;
zend_function *mptr;
+   string dyn;
 
+   count = 0;
+   string_init(dyn);

zend_hash_internal_pointer_reset_ex(ce-function_table, pos);
 
while 
(zend_hash_get_current_data_ex(ce-function_table, (void **) mptr, pos) == 
SUCCESS) {
@@ -524,14 +526,18 @@
 (zend_u_binary_strcasecmp(key.u, 
key_len-1, mptr-common.function_name.u, len) == 0) :
 (zend_binary_strcasecmp(key.s, 
key_len-1, mptr-common.function_name.s, len) == 0))) {
 
-   string_printf(str, \n);
-   _function_string(str, mptr, ce, 
sub_indent.string TSRMLS_CC);
+   string_printf(dyn, \n);
+   _function_string(dyn, mptr, 
ce, sub_indent.string TSRMLS_CC);
+   count++;
}
}
zend_hash_move_forward_ex(ce-function_table, 
pos);
}
+   string_printf(str, \n%s  - Methods [%d] {, indent, 
count);
+   string_append(str, dyn);
+   string_free(dyn);
} else {
-   string_printf(str, \n);
+   string_printf(str, \n%s  - Methods [0] {\n, indent);
}
string_printf(str, %s  }\n, indent);
}
@@ -4903,7 +4909,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.257 
2006/10/02 12:15:47 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.258 
2006/10/03 09:59:24 dmitry Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug39001.phpt

2006-10-02 Thread Antony Dovgal
tony2001Mon Oct  2 12:15:47 2006 UTC

  Added files: 
/php-src/ext/reflection/tests   bug39001.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  fix #39001 (ReflectionProperty returns incorrect declaring class for 
protected properties)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.256r2=1.257diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.256 
php-src/ext/reflection/php_reflection.c:1.257
--- php-src/ext/reflection/php_reflection.c:1.256   Tue Sep 26 07:55:54 2006
+++ php-src/ext/reflection/php_reflection.c Mon Oct  2 12:15:47 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.256 2006/09/26 07:55:54 dmitry Exp $ */
+/* $Id: php_reflection.c,v 1.257 2006/10/02 12:15:47 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4080,12 +4080,19 @@
property_reference *ref;
zend_class_entry *tmp_ce, *ce;
zend_property_info *tmp_info;
+   zstr prop_name, class_name;
+   int prop_name_len;
 
METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
GET_REFLECTION_OBJECT_PTR(ref);
 
+   if (zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, 
ref-prop-name, ref-prop-name_length, class_name, prop_name) != SUCCESS) {
+   RETURN_FALSE;
+   }
+
+   prop_name_len = USTR_LEN(prop_name);
ce = tmp_ce = ref-ce;
-   while (tmp_ce  zend_u_hash_find(tmp_ce-properties_info, 
UG(unicode)?IS_UNICODE:IS_STRING, ref-prop-name, ref-prop-name_length + 1, 
(void **) tmp_info) == SUCCESS) {
+   while (tmp_ce  zend_u_hash_find(tmp_ce-properties_info, 
UG(unicode)?IS_UNICODE:IS_STRING, prop_name, prop_name_len + 1, (void **) 
tmp_info) == SUCCESS) {
ce = tmp_ce;
tmp_ce = tmp_ce-parent;
}
@@ -4896,7 +4903,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.256 
2006/09/26 07:55:54 dmitry Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.257 
2006/10/02 12:15:47 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug39001.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/bug39001.phpt
+++ php-src/ext/reflection/tests/bug39001.phpt
--TEST--
Bug #39001 (ReflectionProperty returns incorrect declaring class for protected 
properties)
--FILE--
?php

class Meta {
}

class CParent extends Meta {
public $publicVar;
protected $protectedVar;
}

class Child extends CParent {
}

$r = new ReflectionClass('Child');

var_dump($r-getProperty('publicVar')-getDeclaringClass()-getName());
var_dump($r-getProperty('protectedVar')-getDeclaringClass()-getName());

echo Done\n;
?
--EXPECTF-- 
string(7) CParent
string(7) CParent
Done
--UEXPECTF--
unicode(7) CParent
unicode(7) CParent
Done

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug38942.phpt

2006-09-26 Thread Dmitry Stogov
dmitry  Tue Sep 26 07:55:54 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   bug38942.phpt 
  Log:
  Fixed bug #38942 (Double old-style-ctor inheritance)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.255r2=1.256diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.255 
php-src/ext/reflection/php_reflection.c:1.256
--- php-src/ext/reflection/php_reflection.c:1.255   Sun Sep 17 09:39:04 2006
+++ php-src/ext/reflection/php_reflection.c Tue Sep 26 07:55:54 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.255 2006/09/17 09:39:04 johannes Exp $ */
+/* $Id: php_reflection.c,v 1.256 2006/09/26 07:55:54 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -511,8 +511,22 @@
 
while 
(zend_hash_get_current_data_ex(ce-function_table, (void **) mptr, pos) == 
SUCCESS) {
if (!(mptr-common.fn_flags  ZEND_ACC_STATIC)) 
{
-   string_printf(str, \n);
-   _function_string(str, mptr, ce, 
sub_indent.string TSRMLS_CC);
+   zstr key;
+   uint key_len;
+   ulong num_index;
+   uint len = 
UG(unicode)?u_strlen(mptr-common.function_name.u):strlen(mptr-common.function_name.s);
+
+   /* Do not display old-style inherited 
constructors */
+   if ((mptr-common.fn_flags  
ZEND_ACC_CTOR) == 0 ||
+   mptr-common.scope == ce ||
+   
zend_hash_get_current_key_ex(ce-function_table, key, key_len, num_index, 
0, pos) != (UG(unicode)?HASH_KEY_IS_UNICODE:HASH_KEY_IS_STRING) ||
+   (UG(unicode) ? 
+(zend_u_binary_strcasecmp(key.u, 
key_len-1, mptr-common.function_name.u, len) == 0) :
+(zend_binary_strcasecmp(key.s, 
key_len-1, mptr-common.function_name.s, len) == 0))) {
+
+   string_printf(str, \n);
+   _function_string(str, mptr, ce, 
sub_indent.string TSRMLS_CC);
+   }
}
zend_hash_move_forward_ex(ce-function_table, 
pos);
}
@@ -4882,7 +4896,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.255 
2006/09/17 09:39:04 johannes Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.256 
2006/09/26 07:55:54 dmitry Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug38942.phpt?r1=1.1r2=1.2diff_format=u
Index: php-src/ext/reflection/tests/bug38942.phpt
diff -u /dev/null php-src/ext/reflection/tests/bug38942.phpt:1.2
--- /dev/null   Tue Sep 26 07:55:54 2006
+++ php-src/ext/reflection/tests/bug38942.phpt  Tue Sep 26 07:55:54 2006
@@ -0,0 +1,34 @@
+--TEST--
+Bug #38942 (Double old-style-ctor inheritance)
+--FILE--
+?php
+class foo {
+public function foo() {}
+}
+
+class bar extends foo {
+}
+ReflectionClass::export(bar);
+?
+--EXPECTF--
+Class [ user class bar extends foo ] {
+  @@ %sbug38942.php 6-7
+
+  - Constants [0] {
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [0] {
+  }
+
+  - Methods [2] {
+Method [ user, inherits foo, ctor public method foo ] {
+  @@ %sbug38942.php 3 - 3
+}
+  }
+}

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



RE: [PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug38942.phpt

2006-09-26 Thread Dmitry Stogov
Ops. Thank you for catching this.

Dmitry.

 -Original Message-
 From: Hannes Magnusson [mailto:[EMAIL PROTECTED] 
 Sent: Tuesday, September 26, 2006 12:07 PM
 To: Dmitry Stogov
 Cc: php-cvs@lists.php.net
 Subject: Re: [PHP-CVS] cvs: php-src /ext/reflection 
 php_reflection.c /ext/reflection/tests bug38942.phpt
 
 
 Hi Dmitry
 
 On 9/26/06, Dmitry Stogov [EMAIL PROTECTED] wrote:
  dmitry  Tue Sep 26 07:55:54 2006 UTC
 
Modified files:
  /php-src/ext/reflection php_reflection.c
  /php-src/ext/reflection/tests   bug38942.phpt
Log:
Fixed bug #38942 (Double old-style-ctor inheritance)
 
 [snip]
  +  - Methods [2] {
 
 This isn't really what I expected. Still marked as 2 methods
 
  +Method [ user, inherits foo, ctor public method foo ] {
  +  @@ %sbug38942.php 3 - 3
  +}
  +  }
  +}
 
 
 
 -Hannes
 

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-09-17 Thread Johannes Schl
johannesSun Sep 17 09:39:04 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Unicode fix
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.254r2=1.255diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.254 
php-src/ext/reflection/php_reflection.c:1.255
--- php-src/ext/reflection/php_reflection.c:1.254   Mon Sep 11 21:21:27 2006
+++ php-src/ext/reflection/php_reflection.c Sun Sep 17 09:39:04 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.254 2006/09/11 21:21:27 johannes Exp $ */
+/* $Id: php_reflection.c,v 1.255 2006/09/17 09:39:04 johannes Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3532,8 +3532,7 @@
zval *interface;
ALLOC_ZVAL(interface);
zend_reflection_class_factory(ce-interfaces[i], 
interface TSRMLS_CC);
-   /* FIXME: Unicode support??? */
-   add_assoc_zval_ex(return_value, 
ce-interfaces[i]-name.s, ce-interfaces[i]-name_length + 1, interface);
+   add_u_assoc_zval_ex(return_value, 
UG(unicode)?IS_UNICODE:IS_STRING, ce-interfaces[i]-name, 
ce-interfaces[i]-name_length + 1, interface);
}
}
 }
@@ -4883,7 +4882,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.254 
2006/09/11 21:21:27 johannes Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.255 
2006/09/17 09:39:04 johannes Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-09-11 Thread Johannes Schl
johannesMon Sep 11 17:06:59 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fix #37923 (Display constant value in reflection::export)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.252r2=1.253diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.252 
php-src/ext/reflection/php_reflection.c:1.253
--- php-src/ext/reflection/php_reflection.c:1.252   Sun Sep 10 13:35:32 2006
+++ php-src/ext/reflection/php_reflection.c Mon Sep 11 17:06:59 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.252 2006/09/10 13:35:32 bjori Exp $ */
+/* $Id: php_reflection.c,v 1.253 2006/09/11 17:06:59 johannes Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -530,10 +530,23 @@
 /* {{{ _const_string */
 static void _const_string(string *str, char *name, zval *value, char *indent 
TSRMLS_DC)
 {
-   string_printf(str, %sConstant [ %s %v ] { }\n,
+   zval value_copy;
+   int use_copy;
+
+   zend_make_printable_zval(value, value_copy, use_copy);
+   if (use_copy) {
+   value = value_copy;
+   }
+
+   string_printf(str, %sConstant [ %s %v ] { %s }\n,
   indent,
   zend_zval_type_name(value),
-  name);
+  name,
+  Z_STRVAL_P(value));
+
+   if (use_copy) {
+   zval_dtor(value);
+   }
 }
 /* }}} */
 
@@ -4867,7 +4880,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.252 
2006/09/10 13:35:32 bjori Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.253 
2006/09/11 17:06:59 johannes Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-09-11 Thread Johannes Schl
johannesMon Sep 11 21:21:28 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Print the type of the original value
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.253r2=1.254diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.253 
php-src/ext/reflection/php_reflection.c:1.254
--- php-src/ext/reflection/php_reflection.c:1.253   Mon Sep 11 17:06:59 2006
+++ php-src/ext/reflection/php_reflection.c Mon Sep 11 21:21:27 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.253 2006/09/11 17:06:59 johannes Exp $ */
+/* $Id: php_reflection.c,v 1.254 2006/09/11 21:21:27 johannes Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -530,9 +530,12 @@
 /* {{{ _const_string */
 static void _const_string(string *str, char *name, zval *value, char *indent 
TSRMLS_DC)
 {
+   char *type;
zval value_copy;
int use_copy;
 
+   type = zend_zval_type_name(value);
+
zend_make_printable_zval(value, value_copy, use_copy);
if (use_copy) {
value = value_copy;
@@ -540,7 +543,7 @@
 
string_printf(str, %sConstant [ %s %v ] { %s }\n,
   indent,
-  zend_zval_type_name(value),
+  type,
   name,
   Z_STRVAL_P(value));
 
@@ -4880,7 +4883,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.253 
2006/09/11 17:06:59 johannes Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.254 
2006/09/11 21:21:27 johannes Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-09-10 Thread Hannes Magnusson
bjori   Sun Sep 10 13:35:33 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  MFB: abstracting ReflectionFunctionAbstract  fix couple of typos
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.251r2=1.252diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.251 
php-src/ext/reflection/php_reflection.c:1.252
--- php-src/ext/reflection/php_reflection.c:1.251   Thu Aug 31 16:14:43 2006
+++ php-src/ext/reflection/php_reflection.c Sun Sep 10 13:35:32 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.251 2006/08/31 16:14:43 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.252 2006/09/10 13:35:32 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1119,7 +1119,7 @@
zend_u_unmangle_property_name(utype, prop-name, prop-name_length, 
class_name, prop_name);

if (!(prop-flags  ZEND_ACC_PRIVATE)) {
-   /* we have to seach the class hierarchy for this (implicit) 
public or protected property */
+   /* we have to search the class hierarchy for this (implicit) 
public or protected property */
zend_class_entry *tmp_ce = ce;
zend_property_info *tmp_info;
int prop_name_len = UG(unicode) ? u_strlen(prop_name.u) : 
strlen(prop_name.s);
@@ -3783,7 +3783,7 @@
}

if (!(property_info-flags  ZEND_ACC_PRIVATE)) {
-   /* we have to seach the class hierarchy for this (implicit) 
public or protected property */
+   /* we have to search the class hierarchy for this (implicit) 
public or protected property */
zend_class_entry *tmp_ce = ce;
zend_property_info *tmp_info;

@@ -4424,8 +4424,7 @@
 
 static zend_function_entry reflection_function_abstract_functions[] = {
ZEND_ME(reflection, __clone, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
-   ZEND_ME(reflection_function, __construct, 
arginfo_reflection_function___construct, 0)
-   ZEND_ME(reflection_function, __toString, NULL, 0)
+   PHP_ABSTRACT_ME(reflection_function, __toString, NULL)
ZEND_ME(reflection_function, isInternal, NULL, 0)
ZEND_ME(reflection_function, isUserDefined, NULL, 0)
ZEND_ME(reflection_function, getName, NULL, 0)
@@ -4445,6 +,8 @@
 };
 
 static zend_function_entry reflection_function_functions[] = {
+   ZEND_ME(reflection_function, __construct, 
arginfo_reflection_function___construct, 0)
+   ZEND_ME(reflection_function, __toString, NULL, 0)
ZEND_ME(reflection_function, export, 
arginfo_reflection_function_export, ZEND_ACC_STATIC|ZEND_ACC_PUBLIC)
ZEND_ME(reflection_function, isDisabled, NULL, 0)
ZEND_ME(reflection_function, invoke, 
arginfo_reflection_function_invoke, 0)
@@ -4533,7 +4534,7 @@
 
 static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_reflection_class_getMethods, 0, 0, 0)
-   ZEND_ARG_INFO(0, $filter)
+   ZEND_ARG_INFO(0, filter)
 ZEND_END_ARG_INFO()
 
 static
@@ -4866,7 +4867,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.251 
2006/08/31 16:14:43 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.252 
2006/09/10 13:35:32 bjori Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug38653.phpt

2006-08-30 Thread Antony Dovgal
tony2001Wed Aug 30 10:41:43 2006 UTC

  Added files: 
/php-src/ext/reflection/tests   bug38653.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  fix #38653 (memory leak in ReflectionClass::getConstant())
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.249r2=1.250diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.249 
php-src/ext/reflection/php_reflection.c:1.250
--- php-src/ext/reflection/php_reflection.c:1.249   Thu Jul 27 09:19:25 2006
+++ php-src/ext/reflection/php_reflection.c Wed Aug 30 10:41:43 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.249 2006/07/27 09:19:25 dmitry Exp $ */
+/* $Id: php_reflection.c,v 1.250 2006/08/30 10:41:43 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -206,6 +206,7 @@
 
*return_value = **value;
zval_copy_ctor(return_value);
+   INIT_PZVAL(return_value);
 }
 
 static void reflection_register_implement(zend_class_entry *class_entry, 
zend_class_entry *interface_entry TSRMLS_DC)
@@ -3261,6 +3262,7 @@
}
*return_value = **value;
zval_copy_ctor(return_value);
+   INIT_PZVAL(return_value);
 }
 /* }}} */
 
@@ -4865,7 +4867,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.249 
2006/07/27 09:19:25 dmitry Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.250 
2006/08/30 10:41:43 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug38653.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/bug38653.phpt
+++ php-src/ext/reflection/tests/bug38653.phpt
--TEST--
Bug #38653 (memory leak in ReflectionClass::getConstant())
--FILE--
?php

class foo {
const cons = 10;
const cons1 = ;
const cons2 = test;
}

class bar extends foo {
}

$foo = new ReflectionClass(foo);
var_dump($foo-getConstant(cons));
var_dump($foo-getConstant(cons1));
var_dump($foo-getConstant(cons2));
var_dump($foo-getConstant(no such const));

echo Done\n;
?
--EXPECTF-- 
int(10)
string(0) 
string(4) test
bool(false)
Done
--UEXPECTF--
int(10)
unicode(0) 
unicode(4) test
bool(false)
Done

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug38217.phpt

2006-07-26 Thread Antony Dovgal
tony2001Wed Jul 26 08:06:59 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/reflection/tests   bug38217.phpt 
  Log:
  fix bug #38217 (ReflectionClass::newInstanceArgs() tries to allocate too much 
memory)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.246r2=1.247diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.246 
php-src/ext/reflection/php_reflection.c:1.247
--- php-src/ext/reflection/php_reflection.c:1.246   Tue Jul 25 12:36:29 2006
+++ php-src/ext/reflection/php_reflection.c Wed Jul 26 08:06:59 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.246 2006/07/25 12:36:29 iliaa Exp $ */
+/* $Id: php_reflection.c,v 1.247 2006/07/26 08:06:59 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3405,7 +3405,7 @@
zval *retval_ptr;
reflection_object *intern;
zend_class_entry *ce;
-   int argc;
+   int argc = 0;
HashTable *args;


@@ -3415,11 +3415,13 @@
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |h, args) == 
FAILURE) {
return;
}
-   argc = args-nNumOfElements;
+   if (ZEND_NUM_ARGS()  0) {
+   argc = args-nNumOfElements;
+   }

/* Run the constructor if there is one */
if (ce-constructor) {
-   zval ***params;
+   zval ***params = NULL;
zend_fcall_info fci;
zend_fcall_info_cache fcc;
 
@@ -3427,10 +3429,12 @@
zend_throw_exception_ex(reflection_exception_ptr, 0 
TSRMLS_CC, Access to non-public constructor of class %v, ce-name);
return;
}
-
-   params = safe_emalloc(sizeof(zval **), argc, 0);
-   zend_hash_apply_with_argument(args, 
(apply_func_arg_t)_zval_array_to_c_array, params TSRMLS_CC);   
-   params -= argc;
+   
+   if (argc) {
+   params = safe_emalloc(sizeof(zval **), argc, 0);
+   zend_hash_apply_with_argument(args, 
(apply_func_arg_t)_zval_array_to_c_array, params TSRMLS_CC);   
+   params -= argc;
+   }
 
object_init_ex(return_value, ce);
 
@@ -3450,7 +3454,9 @@
fcc.object_pp = return_value;
 
if (zend_call_function(fci, fcc TSRMLS_CC) == FAILURE) {
-   efree(params);
+   if (params) {
+   efree(params);
+   }
zval_ptr_dtor(retval_ptr);
zend_error(E_WARNING, Invocation of %v's constructor 
failed, ce-name);
RETURN_NULL();
@@ -3458,7 +3464,9 @@
if (retval_ptr) {
zval_ptr_dtor(retval_ptr);
}
-   efree(params);
+   if (params) {
+   efree(params);
+   }
} else if (!ZEND_NUM_ARGS()) {
object_init_ex(return_value, ce);
} else {
@@ -4837,7 +4845,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.246 
2006/07/25 12:36:29 iliaa Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.247 
2006/07/26 08:06:59 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug38217.phpt?r1=1.1r2=1.2diff_format=u
Index: php-src/ext/reflection/tests/bug38217.phpt
diff -u /dev/null php-src/ext/reflection/tests/bug38217.phpt:1.2
--- /dev/null   Wed Jul 26 08:06:59 2006
+++ php-src/ext/reflection/tests/bug38217.phpt  Wed Jul 26 08:06:59 2006
@@ -0,0 +1,54 @@
+--TEST--
+#38217 (ReflectionClass::newInstanceArgs() tries to allocate too much memory)
+--FILE--
+?php
+
+class Object {
+   public function __construct() {
+   }
+}
+
+$class= new ReflectionClass('Object');
+var_dump($class-newInstanceArgs());
+
+class Object1 {
+   public function __construct($var) {
+   var_dump($var);
+   }
+}
+
+$class= new ReflectionClass('Object1');
+var_dump($class-newInstanceArgs());
+var_dump($class-newInstanceArgs(array('test')));
+
+
+echo Done\n;
+?
+--EXPECTF--
+object(Object)#%d (0) {
+}
+
+Warning: Missing argument 1 for Object1::__construct() in %s on line %d
+
+Notice: Undefined variable: var in %s on line %d
+NULL
+object(Object1)#%d (0) {
+}
+string(4) test
+object(Object1)#%d (0) {
+}
+Done
+--UEXPECTF--
+object(Object)#%d (0) {
+}
+
+Warning: Missing argument 1 for Object1::__construct() in %s on line %d
+
+Notice: Undefined variable: var in %s on line %d

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-07-26 Thread Ilia Alshanetsky
iliaa   Thu Jul 27 00:22:07 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  MFB:   Improved fix for bug #38132
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.247r2=1.248diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.247 
php-src/ext/reflection/php_reflection.c:1.248
--- php-src/ext/reflection/php_reflection.c:1.247   Wed Jul 26 08:06:59 2006
+++ php-src/ext/reflection/php_reflection.c Thu Jul 27 00:22:07 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.247 2006/07/26 08:06:59 tony2001 Exp $ */
+/* $Id: php_reflection.c,v 1.248 2006/07/27 00:22:07 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2643,9 +2643,10 @@
Returns an associative array containing all static property values of the 
class */
 ZEND_METHOD(reflection_class, getStaticProperties)
 {
-   zval *tmp_copy;
reflection_object *intern;
zend_class_entry *ce;
+HashPosition pos;
+zval **value;

METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
GET_REFLECTION_OBJECT_PTR(ce);
@@ -2653,7 +2654,25 @@
zend_update_class_constants(ce TSRMLS_CC);
 
array_init(return_value);
-   zend_hash_copy(Z_ARRVAL_P(return_value), CE_STATIC_MEMBERS(ce), 
(copy_ctor_func_t) zval_add_ref, (void *) tmp_copy, sizeof(zval *));
+   zend_hash_internal_pointer_reset_ex(CE_STATIC_MEMBERS(ce), pos);
+
+   while (zend_hash_get_current_data_ex(CE_STATIC_MEMBERS(ce), (void **) 
value, pos) == SUCCESS) {
+   uint key_len;
+   zstr key;
+   ulong num_index;
+
+   if (zend_hash_get_current_key_ex(CE_STATIC_MEMBERS(ce), key, 
key_len, num_index, 0, pos) != FAILURE) {
+   zstr prop_name, class_name;
+   int prop_name_len = UG(unicode) ? u_strlen(prop_name.u) 
: strlen(prop_name.s);
+
+   
zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, key, key_len-1, 
class_name, prop_name);
+
+   zval_add_ref(value);
+
+   zend_u_hash_update(Z_ARRVAL_P(return_value), 
UG(unicode)?IS_UNICODE:IS_STRING, prop_name, prop_name_len, value, sizeof(zval 
*), NULL);
+   }
+   zend_hash_move_forward_ex(CE_STATIC_MEMBERS(ce), pos);
+   }
 }
 /* }}} */
 
@@ -4845,7 +4864,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.247 
2006/07/26 08:06:59 tony2001 Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.248 
2006/07/27 00:22:07 iliaa Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug38194.phpt

2006-07-25 Thread Ilia Alshanetsky
iliaa   Tue Jul 25 12:36:29 2006 UTC

  Modified files:  
/php-src/ext/reflection/tests   bug38194.phpt 
/php-src/ext/reflection php_reflection.c 
  Log:
  MFB: Fixed bug #38194 (ReflectionClass::isSubclassOf() returns TRUE for the 
  class itself). 
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug38194.phpt?r1=1.1r2=1.2diff_format=u
Index: php-src/ext/reflection/tests/bug38194.phpt
diff -u /dev/null php-src/ext/reflection/tests/bug38194.phpt:1.2
--- /dev/null   Tue Jul 25 12:36:29 2006
+++ php-src/ext/reflection/tests/bug38194.phpt  Tue Jul 25 12:36:29 2006
@@ -0,0 +1,13 @@
+--TEST--
+Reflection Bug #38194 (ReflectionClass::isSubclassOf() returns TRUE for the 
class itself)
+--SKIPIF--
+?php extension_loaded('reflection') or die('skip'); ?
+--FILE--
+?php
+class Object { }
+  
+$objectClass= new ReflectionClass('Object');
+var_dump($objectClass-isSubclassOf($objectClass));
+?
+--EXPECT--
+bool(false)
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.245r2=1.246diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.245 
php-src/ext/reflection/php_reflection.c:1.246
--- php-src/ext/reflection/php_reflection.c:1.245   Mon Jul 24 17:55:41 2006
+++ php-src/ext/reflection/php_reflection.c Tue Jul 25 12:36:29 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.245 2006/07/24 17:55:41 helly Exp $ */
+/* $Id: php_reflection.c,v 1.246 2006/07/25 12:36:29 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3574,8 +3574,7 @@
return;
}
 
-
-   RETURN_BOOL(instanceof_function(ce, class_ce TSRMLS_CC));
+   RETURN_BOOL((ce != class_ce  instanceof_function(ce, class_ce 
TSRMLS_CC)));
 }
 /* }}} */
 
@@ -4838,7 +4837,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.245 
2006/07/24 17:55:41 helly Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.246 
2006/07/25 12:36:29 iliaa Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/soap php_encoding.c /ext/standard http.c var.c /ext/wddx wddx.c

2006-07-24 Thread Marcus Boerger
helly   Mon Jul 24 17:55:42 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
/php-src/ext/soap   php_encoding.c 
/php-src/ext/standard   http.c var.c 
/php-src/ext/wddx   wddx.c 
  Log:
  - zend_(u_)_unmangle_property_name() has changed
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.244r2=1.245diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.244 
php-src/ext/reflection/php_reflection.c:1.245
--- php-src/ext/reflection/php_reflection.c:1.244   Tue Jul 18 17:52:45 2006
+++ php-src/ext/reflection/php_reflection.c Mon Jul 24 17:55:41 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.244 2006/07/18 17:52:45 andrei Exp $ */
+/* $Id: php_reflection.c,v 1.245 2006/07/24 17:55:41 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -791,7 +791,7 @@
string_printf(str, static );
}
 
-   zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, 
prop-name, class_name, prop_name);
+   zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, 
prop-name, prop-name_length, class_name, prop_name);
string_printf(str, $%v, prop_name);
}
 
@@ -1115,7 +1115,7 @@
zstr class_name, prop_name;
zend_uchar utype = UG(unicode) ? IS_UNICODE : IS_STRING;
 
-   zend_u_unmangle_property_name(utype, prop-name, class_name, 
prop_name);
+   zend_u_unmangle_property_name(utype, prop-name, prop-name_length, 
class_name, prop_name);

if (!(prop-flags  ZEND_ACC_PRIVATE)) {
/* we have to seach the class hierarchy for this (implicit) 
public or protected property */
@@ -2755,7 +2755,7 @@
 
zend_hash_get_current_key_ex(ce-default_properties, 
key, key_len, num_index, 0, pos);
zend_hash_move_forward_ex(ce-default_properties, 
pos);
-   
zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, key, 
class_name, prop_name);
+   
zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, key, key_len-1, 
class_name, prop_name);
/* FIXME: Unicode support??? */
if (class_name.s  class_name.s[0] != '*'  
strcmp(class_name.s, ce-name.s)) {
/* filter privates from base classes */
@@ -3770,7 +3770,7 @@
ZVAL_TEXTL(classname, ce-name, ce-name_length, 1);
zend_hash_update(Z_OBJPROP_P(object), class, sizeof(class), (void 
**) classname, sizeof(zval *), NULL);

-   zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, 
property_info-name, class_name, prop_name);
+   zend_u_unmangle_property_name(UG(unicode)?IS_UNICODE:IS_STRING, 
property_info-name, property_info-name_length, class_name, prop_name);
MAKE_STD_ZVAL(propname);
ZVAL_TEXT(propname, prop_name, 1);
zend_hash_update(Z_OBJPROP_P(object), name, sizeof(name), (void **) 
propname, sizeof(zval *), NULL);
@@ -4838,7 +4838,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.244 
2006/07/18 17:52:45 andrei Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.245 
2006/07/24 17:55:41 helly Exp $);
 
php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/soap/php_encoding.c?r1=1.137r2=1.138diff_format=u
Index: php-src/ext/soap/php_encoding.c
diff -u php-src/ext/soap/php_encoding.c:1.137 
php-src/ext/soap/php_encoding.c:1.138
--- php-src/ext/soap/php_encoding.c:1.137   Tue Jul 18 15:05:07 2006
+++ php-src/ext/soap/php_encoding.c Mon Jul 24 17:55:41 2006
@@ -17,7 +17,7 @@
   |  Dmitry Stogov [EMAIL PROTECTED] |
   +--+
 */
-/* $Id: php_encoding.c,v 1.137 2006/07/18 15:05:07 dmitry Exp $ */
+/* $Id: php_encoding.c,v 1.138 2006/07/24 17:55:41 helly Exp $ */
 
 #include time.h
 
@@ -1844,7 +1844,7 @@
if (Z_TYPE_P(data) == IS_OBJECT) {
char *class_name;
 
-   
zend_unmangle_property_name(key.s, class_name, prop_name);
+   
zend_unmangle_property_name(key.s, key_len-1, class_name, prop_name);
} else {
prop_name = key.s;
}
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/http.c?r1=1.21r2=1.22diff_format=u
Index: php-src/ext/standard/http.c
diff -u 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c ZendEngine2 zend_API.c zend_builtin_functions.c zend_compile.h zend_execute.c zend_execute.h zend_execute_API.c zend_language_scanner.l zend_op

2006-07-18 Thread Andrei Zmievski
andrei  Tue Jul 18 17:52:45 2006 UTC

  Modified files:  
/ZendEngine2zend_API.c zend_builtin_functions.c zend_compile.h 
zend_execute.c zend_execute.h zend_execute_API.c 
zend_language_scanner.l zend_operators.c 
zend_unicode.c 
/php-src/ext/reflection php_reflection.c 
  Log:
  Callable checks and class fetching and lookup should support identifer
  normalization now. (Marcus, Andrei)
  
  http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_API.c?r1=1.379r2=1.380diff_format=u
Index: ZendEngine2/zend_API.c
diff -u ZendEngine2/zend_API.c:1.379 ZendEngine2/zend_API.c:1.380
--- ZendEngine2/zend_API.c:1.379Mon Jul 17 20:52:12 2006
+++ ZendEngine2/zend_API.c  Tue Jul 18 17:52:44 2006
@@ -18,7 +18,7 @@
+--+
 */
 
-/* $Id: zend_API.c,v 1.379 2006/07/17 20:52:12 andrei Exp $ */
+/* $Id: zend_API.c,v 1.380 2006/07/18 17:52:44 andrei Exp $ */
 
 #include zend.h
 #include zend_execute.h
@@ -2578,10 +2578,9 @@
 static int zend_is_callable_check_func(int check_flags, zval ***zobj_ptr_ptr, 
zend_class_entry *ce_org, zval *callable, zend_class_entry **ce_ptr, 
zend_function **fptr_ptr TSRMLS_DC)
 {
int retval;
-   zstr lcname, lmname, mname, colon;
+   zstr lmname, mname, colon;
unsigned int clen, mlen;
zend_function *fptr;
-   zend_class_entry **pce;
HashTable *ftable;
 
*ce_ptr = NULL;
@@ -2601,18 +2600,7 @@
}
}
if (colon.v != NULL) {
-   lcname = zend_u_str_case_fold(Z_TYPE_P(callable), 
Z_UNIVAL_P(callable), clen, 0, clen);
-   /* caution: lcname is not '\0' terminated */
-   if (clen == sizeof(self) - 1 
-   ZEND_U_EQUAL(Z_TYPE_P(callable), lcname, clen, self, 
sizeof(self)-1)) {
-   *ce_ptr = EG(scope);
-   } else if (clen == sizeof(parent) - 1 
-   ZEND_U_EQUAL(Z_TYPE_P(callable), lcname, clen, parent, 
sizeof(parent)-1)) {
-   *ce_ptr = EG(scope) ? EG(scope)-parent : NULL;
-   } else if (zend_u_lookup_class(Z_TYPE_P(callable), 
Z_UNIVAL_P(callable), clen, pce TSRMLS_CC) == SUCCESS) {
-   *ce_ptr = *pce;
-   }
-   efree(lcname.v);
+   *ce_ptr = zend_u_fetch_class(Z_TYPE_P(callable), 
Z_UNIVAL_P(callable), clen, ZEND_FETCH_CLASS_AUTO TSRMLS_CC);
if (!*ce_ptr) {
return 0;
}
@@ -2620,9 +2608,9 @@
if (ce_org  !instanceof_function(ce_org, *ce_ptr TSRMLS_CC)) {
return 0;
}
-   lmname = zend_u_str_case_fold(Z_TYPE_P(callable), mname, mlen, 
0, mlen);
+   lmname = zend_u_str_case_fold(Z_TYPE_P(callable), mname, mlen, 
1, mlen);
} else {
-   lmname = zend_u_str_case_fold(Z_TYPE_P(callable), 
Z_UNIVAL_P(callable), Z_UNILEN_P(callable), 0, mlen);
+   lmname = zend_u_str_case_fold(Z_TYPE_P(callable), 
Z_UNIVAL_P(callable), Z_UNILEN_P(callable), 1, mlen);
if (ce_org) {
ftable = ce_org-function_table;
*ce_ptr = ce_org;
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_builtin_functions.c?r1=1.318r2=1.319diff_format=u
Index: ZendEngine2/zend_builtin_functions.c
diff -u ZendEngine2/zend_builtin_functions.c:1.318 
ZendEngine2/zend_builtin_functions.c:1.319
--- ZendEngine2/zend_builtin_functions.c:1.318  Sat Jul 15 19:16:19 2006
+++ ZendEngine2/zend_builtin_functions.cTue Jul 18 17:52:44 2006
@@ -17,7 +17,7 @@
+--+
 */
 
-/* $Id: zend_builtin_functions.c,v 1.318 2006/07/15 19:16:19 helly Exp $ */
+/* $Id: zend_builtin_functions.c,v 1.319 2006/07/18 17:52:44 andrei Exp $ */
 
 #include zend.h
 #include zend_API.h
@@ -702,7 +702,7 @@
 
convert_to_text_ex(class_name);
 
-   if (zend_u_lookup_class_ex(Z_TYPE_PP(class_name), 
Z_UNIVAL_PP(class_name), Z_UNILEN_PP(class_name), (instance_ce != NULL) ? 1 : 
0, ce TSRMLS_CC) == FAILURE) {
+   if (zend_u_lookup_class_ex(Z_TYPE_PP(class_name), 
Z_UNIVAL_PP(class_name), Z_UNILEN_PP(class_name), (instance_ce != NULL) ? 1 : 
0, 1, ce TSRMLS_CC) == FAILURE) {
retval = 0;
} else {
if (only_subclass) {
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_compile.h?r1=1.343r2=1.344diff_format=u
Index: ZendEngine2/zend_compile.h
diff -u ZendEngine2/zend_compile.h:1.343 ZendEngine2/zend_compile.h:1.344
--- ZendEngine2/zend_compile.h:1.343Tue Jun 13 12:56:20 2006
+++ ZendEngine2/zend_compile.h  Tue Jul 18 17:52:44 2006
@@ -17,7 +17,7 @@
+--+
 */
 
-/* $Id: zend_compile.h,v 1.343 2006/06/13 12:56:20 sesser Exp $ */
+/* 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-07-13 Thread Antony Dovgal
tony2001Thu Jul 13 12:34:30 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Unicode support in ReflectionParameter::__construct()
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.242r2=1.243diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.242 
php-src/ext/reflection/php_reflection.c:1.243
--- php-src/ext/reflection/php_reflection.c:1.242   Mon Jul 10 00:13:50 2006
+++ php-src/ext/reflection/php_reflection.c Thu Jul 13 12:34:30 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.242 2006/07/10 00:13:50 helly Exp $ */
+/* $Id: php_reflection.c,v 1.243 2006/07/13 12:34:30 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1866,10 +1866,12 @@
zend_uint i;
 
position= -1;
-   convert_to_string_ex(parameter);
+   convert_to_text_ex(parameter);
for (i = 0; i  fptr-common.num_args; i++) {
-   /* FIXME: Unicode support??? */
-   if (arg_info[i].name.s  strcmp(arg_info[i].name.s, 
Z_STRVAL_P(parameter)) == 0) {
+   if (Z_TYPE_P(parameter) == IS_STRING  
arg_info[i].name.s  strcmp(arg_info[i].name.s, Z_STRVAL_P(parameter)) == 0) {
+   position= i;
+   break;
+   } else if (Z_TYPE_P(parameter) == IS_UNICODE  
arg_info[i].name.u  u_strcmp(arg_info[i].name.u, Z_USTRVAL_P(parameter)) == 
0) {
position= i;
break;
}
@@ -4836,7 +4838,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.242 
2006/07/10 00:13:50 helly Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.243 
2006/07/13 12:34:30 tony2001 Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-07-09 Thread Marcus Boerger
helly   Sun Jul  9 23:28:59 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fix logic
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.240r2=1.241diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.240 
php-src/ext/reflection/php_reflection.c:1.241
--- php-src/ext/reflection/php_reflection.c:1.240   Fri Jul  7 11:53:54 2006
+++ php-src/ext/reflection/php_reflection.c Sun Jul  9 23:28:59 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.240 2006/07/07 11:53:54 bjori Exp $ */
+/* $Id: php_reflection.c,v 1.241 2006/07/09 23:28:59 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3960,7 +3960,7 @@
METHOD_NOTSTATIC(reflection_property_ptr);
GET_REFLECTION_OBJECT_PTR(ref);
 
-   if (ref-prop-flags  ~(ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)) {
+   if (!(ref-prop-flags  ZEND_ACC_PUBLIC)) {
_DO_THROW(Cannot access non-public member);
/* Returns from this function */
}
@@ -4832,7 +4832,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.240 
2006/07/07 11:53:54 bjori Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.241 
2006/07/09 23:28:59 helly Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c /ext/reflection/tests bug37816.phpt

2006-07-09 Thread Marcus Boerger
helly   Mon Jul 10 00:13:50 2006 UTC

  Added files: 
/php-src/ext/reflection/tests   bug37816.phpt 

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fix bug #37816 ReflectionProperty does not throw exception when accessing 
protected attribute
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.241r2=1.242diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.241 
php-src/ext/reflection/php_reflection.c:1.242
--- php-src/ext/reflection/php_reflection.c:1.241   Sun Jul  9 23:28:59 2006
+++ php-src/ext/reflection/php_reflection.c Mon Jul 10 00:13:50 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.241 2006/07/09 23:28:59 helly Exp $ */
+/* $Id: php_reflection.c,v 1.242 2006/07/10 00:13:50 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3907,24 +3907,25 @@
 {
reflection_object *intern;
property_reference *ref;
-   zval *object;
+   zval *object, name;
zval **member= NULL;
zend_uchar utype = UG(unicode)?IS_UNICODE:IS_STRING;
 
METHOD_NOTSTATIC(reflection_property_ptr);
GET_REFLECTION_OBJECT_PTR(ref);
 
-#if MBO_0
if (!(ref-prop-flags  ZEND_ACC_PUBLIC)) {
-   _DO_THROW(Cannot access non-public member);
-   /* Returns from this function */
+   _default_get_entry(getThis(), name, sizeof(name), name 
TSRMLS_CC);
+   zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, 
+   Cannot access non-public member %v::%v, 
intern-ce-name, Z_UNIVAL(name));
+   zval_dtor(name);
+   return;
}
-#endif
 
if ((ref-prop-flags  ZEND_ACC_STATIC)) {
zend_update_class_constants(intern-ce TSRMLS_CC);
if (zend_u_hash_quick_find(CE_STATIC_MEMBERS(intern-ce), 
utype, ref-prop-name, ref-prop-name_length + 1, ref-prop-h, (void **) 
member) == FAILURE) {
-   zend_error(E_ERROR, Internal error: Could not find the 
property %v, ref-prop-name);
+   zend_error(E_ERROR, Internal error: Could not find the 
property %v::%v, intern-ce-name, ref-prop-name);
/* Bails out */
}
} else {
@@ -3932,7 +3933,7 @@
return;
}
if (zend_u_hash_quick_find(Z_OBJPROP_P(object), utype, 
ref-prop-name, ref-prop-name_length + 1, ref-prop-h, (void **) member) 
== FAILURE) {
-   zend_error(E_ERROR, Internal error: Could not find the 
property %v, ref-prop-name);
+   zend_error(E_ERROR, Internal error: Could not find the 
property %v::%v, intern-ce-name, ref-prop-name);
/* Bails out */
}
}
@@ -3950,7 +3951,7 @@
reflection_object *intern;
property_reference *ref;
zval **variable_ptr;
-   zval *object;
+   zval *object, name;
zval *value;
int setter_done = 0;
zval *tmp;
@@ -3961,8 +3962,11 @@
GET_REFLECTION_OBJECT_PTR(ref);
 
if (!(ref-prop-flags  ZEND_ACC_PUBLIC)) {
-   _DO_THROW(Cannot access non-public member);
-   /* Returns from this function */
+   _default_get_entry(getThis(), name, sizeof(name), name 
TSRMLS_CC);
+   zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, 
+   Cannot access non-public member %v::%v, 
intern-ce-name, Z_UNIVAL(name));
+   zval_dtor(name);
+   return;
}
 
if ((ref-prop-flags  ZEND_ACC_STATIC)) {
@@ -3981,7 +3985,7 @@
}
 
if (zend_u_hash_quick_find(prop_table, utype, ref-prop-name, 
ref-prop-name_length + 1, ref-prop-h, (void **) variable_ptr) == FAILURE) {
-   zend_error(E_ERROR, Internal error: Could not find the 
property %v, ref-prop-name);
+   zend_error(E_ERROR, Internal error: Could not find the 
property %v::%v, intern-ce-name, ref-prop-name);
/* Bails out */
}
if (*variable_ptr == value) {
@@ -4832,7 +4836,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.241 
2006/07/09 23:28:59 helly Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.242 
2006/07/10 00:13:50 helly Exp $);
 
php_info_print_table_end();
 } /* }}} */

http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug37816.phpt?view=markuprev=1.1
Index: php-src/ext/reflection/tests/bug37816.phpt
+++ php-src/ext/reflection/tests/bug37816.phpt
--TEST--
Bug #37816 (ReflectionProperty does not throw exception when accessing 
protected attribute)
--FILE--

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-07-07 Thread Hannes Magnusson
bjori   Fri Jul  7 11:53:54 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Added new method to see if function is disabled or not
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.239r2=1.240diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.239 
php-src/ext/reflection/php_reflection.c:1.240
--- php-src/ext/reflection/php_reflection.c:1.239   Tue Jul  4 15:37:13 2006
+++ php-src/ext/reflection/php_reflection.c Fri Jul  7 11:53:54 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.239 2006/07/04 15:37:13 bjori Exp $ */
+/* $Id: php_reflection.c,v 1.240 2006/07/07 11:53:54 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -1429,6 +1429,19 @@
 }
 /* }}} */
 
+/* {{{ proto public bool ReflectionFunction::isDisabled()
+   Returns whether this function has been disabled or not */
+ZEND_METHOD(reflection_function, isDisabled)
+{
+   reflection_object *intern;
+   zend_function *fptr;
+
+   METHOD_NOTSTATIC(reflection_function_ptr);
+   GET_REFLECTION_OBJECT_PTR(fptr);
+   RETURN_BOOL(fptr-type == ZEND_INTERNAL_FUNCTION  
fptr-internal_function.handler == zif_display_disabled_function);
+}
+/* }}} */
+
 /* {{{ proto public string ReflectionFunction::getFileName()
Returns the filename of the file this function was declared in */
 ZEND_METHOD(reflection_function, getFileName)
@@ -4399,6 +4412,7 @@
 
 static zend_function_entry reflection_function_functions[] = {
ZEND_ME(reflection_function, export, 
arginfo_reflection_function_export, ZEND_ACC_STATIC|ZEND_ACC_PUBLIC)
+   ZEND_ME(reflection_function, isDisabled, NULL, 0)
ZEND_ME(reflection_function, invoke, 
arginfo_reflection_function_invoke, 0)
ZEND_ME(reflection_function, invokeArgs, 
arginfo_reflection_function_invokeArgs, 0)
{NULL, NULL, NULL}
@@ -4818,7 +4832,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.239 
2006/07/04 15:37:13 bjori Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.240 
2006/07/07 11:53:54 bjori Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-07-04 Thread Hannes Magnusson
bjori   Tue Jul  4 15:37:13 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Obs. ZEND_BEGIN_ARG_INFO = ZEND_BEGIN_ARG_INFO_EX
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.238r2=1.239diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.238 
php-src/ext/reflection/php_reflection.c:1.239
--- php-src/ext/reflection/php_reflection.c:1.238   Tue Jul  4 15:33:32 2006
+++ php-src/ext/reflection/php_reflection.c Tue Jul  4 15:37:13 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.238 2006/07/04 15:33:32 bjori Exp $ */
+/* $Id: php_reflection.c,v 1.239 2006/07/04 15:37:13 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -4499,7 +4499,7 @@
 ZEND_END_ARG_INFO()
 
 static
-ZEND_BEGIN_ARG_INFO(arginfo_reflection_class_getProperties, 0, 0, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_reflection_class_getProperties, 0, 0, 0)
ZEND_ARG_INFO(0, filter)
 ZEND_END_ARG_INFO()
 
@@ -4818,7 +4818,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.238 
2006/07/04 15:33:32 bjori Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.239 
2006/07/04 15:37:13 bjori Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-07-04 Thread Hannes Magnusson
bjori   Tue Jul  4 15:33:32 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Fix protosarginfo
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.237r2=1.238diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.237 
php-src/ext/reflection/php_reflection.c:1.238
--- php-src/ext/reflection/php_reflection.c:1.237   Sat Jun 24 18:53:51 2006
+++ php-src/ext/reflection/php_reflection.c Tue Jul  4 15:33:32 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.237 2006/06/24 18:53:51 helly Exp $ */
+/* $Id: php_reflection.c,v 1.238 2006/07/04 15:33:32 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -2969,7 +2969,7 @@
 }
 /* }}} */
 
-/* {{{ proto public ReflectionMethod[] ReflectionClass::getMethods()
+/* {{{ proto public ReflectionMethod[] ReflectionClass::getMethods([long 
$filter])
Returns an array of this class' methods */
 ZEND_METHOD(reflection_class, getMethods)
 {
@@ -3134,7 +3134,7 @@
 }
 /* }}} */
 
-/* {{{ proto public ReflectionProperty[] ReflectionClass::getProperties()
+/* {{{ proto public ReflectionProperty[] ReflectionClass::getProperties([long 
$filter])
Returns an array of this class' properties */
 ZEND_METHOD(reflection_class, getProperties)
 {
@@ -3383,7 +3383,7 @@
 }
 /* }}} */
 
-/* {{{ proto public stdclass ReflectionClass::newInstanceArgs(array args)
+/* {{{ proto public stdclass ReflectionClass::newInstanceArgs([array args])
Returns an instance of this class */
 ZEND_METHOD(reflection_class, newInstanceArgs)
 {
@@ -4484,6 +4484,11 @@
 ZEND_END_ARG_INFO()
 
 static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_reflection_class_getMethods, 0, 0, 0)
+   ZEND_ARG_INFO(0, $filter)
+ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO(arginfo_reflection_class_hasProperty, 0)
ZEND_ARG_INFO(0, name)
 ZEND_END_ARG_INFO()
@@ -4494,6 +4499,11 @@
 ZEND_END_ARG_INFO()
 
 static
+ZEND_BEGIN_ARG_INFO(arginfo_reflection_class_getProperties, 0, 0, 0)
+   ZEND_ARG_INFO(0, filter)
+ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO(arginfo_reflection_class_hasConstant, 0)
ZEND_ARG_INFO(0, name)
 ZEND_END_ARG_INFO()
@@ -4514,7 +4524,7 @@
 ZEND_END_ARG_INFO()
 
 static
-ZEND_BEGIN_ARG_INFO(arginfo_reflection_class_newInstanceArgs, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_reflection_class_newInstanceArgs, 0, 0, 0)
ZEND_ARG_ARRAY_INFO(0, args, 0)
 ZEND_END_ARG_INFO()
 
@@ -4544,10 +4554,10 @@
ZEND_ME(reflection_class, getConstructor, NULL, 0)
ZEND_ME(reflection_class, hasMethod, 
arginfo_reflection_class_hasMethod, 0)
ZEND_ME(reflection_class, getMethod, 
arginfo_reflection_class_getMethod, 0)
-   ZEND_ME(reflection_class, getMethods, NULL, 0)
+   ZEND_ME(reflection_class, getMethods, 
arginfo_reflection_class_getMethods, 0)
ZEND_ME(reflection_class, hasProperty, 
arginfo_reflection_class_hasProperty, 0)
ZEND_ME(reflection_class, getProperty, 
arginfo_reflection_class_getProperty, 0)
-   ZEND_ME(reflection_class, getProperties, NULL, 0)
+   ZEND_ME(reflection_class, getProperties, 
arginfo_reflection_class_getProperties, 0)
ZEND_ME(reflection_class, hasConstant, 
arginfo_reflection_class_hasConstant, 0)
ZEND_ME(reflection_class, getConstants, NULL, 0)
ZEND_ME(reflection_class, getConstant, 
arginfo_reflection_class_getConstant, 0)
@@ -4808,7 +4818,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.237 
2006/06/24 18:53:51 helly Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.238 
2006/07/04 15:33:32 bjori Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-06-24 Thread Marcus Boerger
helly   Sat Jun 24 18:53:51 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Fix ReflectionObject::getProperties() + dyn properties
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.236r2=1.237diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.236 
php-src/ext/reflection/php_reflection.c:1.237
--- php-src/ext/reflection/php_reflection.c:1.236   Sun Jun 11 23:46:53 2006
+++ php-src/ext/reflection/php_reflection.c Sat Jun 24 18:53:51 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.236 2006/06/11 23:46:53 bjori Exp $ */
+/* $Id: php_reflection.c,v 1.237 2006/06/24 18:53:51 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3106,6 +3106,34 @@
 }
 /* }}} */
 
+/* {{{ _adddynproperty */
+static int _adddynproperty(zval **pptr, int num_args, va_list args, 
zend_hash_key *hash_key)
+{
+   zval *property;
+   zend_class_entry *ce = *va_arg(args, zend_class_entry**);
+   zval *retval = va_arg(args, zval*), member;
+   TSRMLS_FETCH();
+
+   if (hash_key-type == IS_UNICODE) {
+   if (hash_key-arKey.u[0] == 0) {
+   return 0; /* non public cannot be dynamic */
+   }
+   ZVAL_UNICODEL(member, hash_key-arKey.u, 
hash_key-nKeyLength-1, 0);
+   } else {
+   if (hash_key-arKey.s[0] == '\0') {
+   return 0; /* non public cannot be dynamic */
+   }
+   ZVAL_STRINGL(member, hash_key-arKey.s, 
hash_key-nKeyLength-1, 0);
+   }
+   if (zend_get_property_info(ce, member, 1 TSRMLS_CC) == 
EG(std_property_info)) {
+   ALLOC_ZVAL(property);
+   reflection_property_factory(ce, EG(std_property_info), 
property TSRMLS_CC);
+   add_next_index_zval(retval, property);
+   }
+   return 0;
+}
+/* }}} */
+
 /* {{{ proto public ReflectionProperty[] ReflectionClass::getProperties()
Returns an array of this class' properties */
 ZEND_METHOD(reflection_class, getProperties)
@@ -3129,6 +3157,11 @@
 
array_init(return_value);
zend_hash_apply_with_arguments(ce-properties_info, 
(apply_func_args_t) _addproperty, 3, ce, return_value, filter);
+
+   if (intern-obj  (filter  ZEND_ACC_PUBLIC) != 0  
Z_OBJ_HT_P(intern-obj)-get_properties) {
+   HashTable *properties = 
Z_OBJ_HT_P(intern-obj)-get_properties(intern-obj TSRMLS_CC);
+   zend_hash_apply_with_arguments(properties, (apply_func_args_t) 
_adddynproperty, 2, ce, return_value);
+   }
 }
 /* }}} */
 
@@ -4775,7 +4808,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.236 
2006/06/11 23:46:53 bjori Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.237 
2006/06/24 18:53:51 helly Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-06-11 Thread Hannes Magnusson
bjori   Sun Jun 11 23:46:53 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  Only display visibility for methods
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/reflection/php_reflection.c?r1=1.235r2=1.236diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.235 
php-src/ext/reflection/php_reflection.c:1.236
--- php-src/ext/reflection/php_reflection.c:1.235   Sat Jun 10 00:28:28 2006
+++ php-src/ext/reflection/php_reflection.c Sun Jun 11 23:46:53 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.235 2006/06/10 00:28:28 bjori Exp $ */
+/* $Id: php_reflection.c,v 1.236 2006/06/11 23:46:53 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -717,23 +717,27 @@
string_printf(str, static );
}
 
-   /* These are mutually exclusive */
-   switch (fptr-common.fn_flags  ZEND_ACC_PPP_MASK) {
-   case ZEND_ACC_PUBLIC:
-   string_printf(str, public );
-   break;
-   case ZEND_ACC_PRIVATE:
-   string_printf(str, private );
-   break;
-   case ZEND_ACC_PROTECTED:
-   string_printf(str, protected );
-   break;
-   default:
-   string_printf(str, visibility error );
-   break;
+   if (fptr-common.scope) {
+   /* These are mutually exclusive */
+   switch (fptr-common.fn_flags  ZEND_ACC_PPP_MASK) {
+   case ZEND_ACC_PUBLIC:
+   string_printf(str, public );
+   break;
+   case ZEND_ACC_PRIVATE:
+   string_printf(str, private );
+   break;
+   case ZEND_ACC_PROTECTED:
+   string_printf(str, protected );
+   break;
+   default:
+   string_printf(str, visibility error );
+   break;
+   }
+   string_printf(str, method );
+   } else {
+   string_printf(str, function );
}
 
-   string_printf(str, fptr-common.scope ? method  : function );
if (fptr-op_array.return_reference) {
string_printf(str, );
}
@@ -4771,7 +4775,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.235 
2006/06/10 00:28:28 bjori Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.236 
2006/06/11 23:46:53 bjori Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c php_reflection.h

2006-06-09 Thread Hannes Magnusson
bjori   Sat Jun 10 00:28:28 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c php_reflection.h 
  Log:
  Fixed bug #37764
  - Created new abstract class, ReflectionFunctionAbstract implementing 
Reflector
  - Moved all methods from ReflectionFunction (except export, invoke  
invokeArgs)
  - ReflectionFunction now inherits everything from ReflectionFunctionAbstract
  and implements its own export, invoke  invokeArgs methods
  - ReflectionMethod now extends ReflectionFunctionAbstract and implements
  its own export, invoke  invokeArgs methods.
  - Removed stdClass typehint from ReflectionClass::isInstance
  - Removed stdClass typehint from ReflectionClass::set/getValue
  
  
  http://cvs.php.net/viewcvs.cgi/php-src/ext/reflection/php_reflection.c?r1=1.234r2=1.235diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.234 
php-src/ext/reflection/php_reflection.c:1.235
--- php-src/ext/reflection/php_reflection.c:1.234   Wed Jun  7 22:39:00 2006
+++ php-src/ext/reflection/php_reflection.c Sat Jun 10 00:28:28 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.234 2006/06/07 22:39:00 helly Exp $ */
+/* $Id: php_reflection.c,v 1.235 2006/06/10 00:28:28 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -43,6 +43,7 @@
 PHPAPI zend_class_entry *reflector_ptr;
 PHPAPI zend_class_entry *reflection_exception_ptr;
 PHPAPI zend_class_entry *reflection_ptr;
+PHPAPI zend_class_entry *reflection_function_abstract_ptr;
 PHPAPI zend_class_entry *reflection_function_ptr;
 PHPAPI zend_class_entry *reflection_parameter_ptr;
 PHPAPI zend_class_entry *reflection_class_ptr;
@@ -1381,7 +1382,7 @@
zend_function *fptr;
string str;
 
-   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
GET_REFLECTION_OBJECT_PTR(fptr);
string_init(str);
_function_string(str, fptr, intern-ce,  TSRMLS_CC);
@@ -1393,7 +1394,7 @@
Returns this function's name */
 ZEND_METHOD(reflection, function_getName)
 {
-   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
_default_get_entry(getThis(), name, sizeof(name), return_value 
TSRMLS_CC);
 }
 /* }}} */
@@ -1405,7 +1406,7 @@
reflection_object *intern;
zend_function *fptr;
 
-   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
GET_REFLECTION_OBJECT_PTR(fptr);
RETURN_BOOL(fptr-type == ZEND_INTERNAL_FUNCTION);
 }
@@ -1418,7 +1419,7 @@
reflection_object *intern;
zend_function *fptr;
 
-   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
GET_REFLECTION_OBJECT_PTR(fptr);
RETURN_BOOL(fptr-type == ZEND_USER_FUNCTION);
 }
@@ -1431,7 +1432,7 @@
reflection_object *intern;
zend_function *fptr;
 
-   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
GET_REFLECTION_OBJECT_PTR(fptr);
if (fptr-type == ZEND_USER_FUNCTION) {
RETURN_STRING(fptr-op_array.filename, 1);
@@ -1447,7 +1448,7 @@
reflection_object *intern;
zend_function *fptr;
 
-   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
GET_REFLECTION_OBJECT_PTR(fptr);
if (fptr-type == ZEND_USER_FUNCTION) {
RETURN_LONG(fptr-op_array.line_start);
@@ -1463,7 +1464,7 @@
reflection_object *intern;
zend_function *fptr;
 
-   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
GET_REFLECTION_OBJECT_PTR(fptr);
if (fptr-type == ZEND_USER_FUNCTION) {
RETURN_LONG(fptr-op_array.line_end);
@@ -1479,7 +1480,7 @@
reflection_object *intern;
zend_function *fptr;
 
-   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
GET_REFLECTION_OBJECT_PTR(fptr);
if (fptr-type == ZEND_USER_FUNCTION  fptr-op_array.doc_comment) {
RETURN_STRINGL(fptr-op_array.doc_comment, 
fptr-op_array.doc_comment_len, 1);
@@ -1496,7 +1497,7 @@
reflection_object *intern;
zend_function *fptr;

-   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
GET_REFLECTION_OBJECT_PTR(fptr);
 
/* Return an empty array in case no static variables exist 

[PHP-CVS] cvs: php-src /ext/reflection php_reflection.c

2006-06-07 Thread Marcus Boerger
helly   Wed Jun  7 09:11:58 2006 UTC

  Modified files:  
/php-src/ext/reflection php_reflection.c 
  Log:
  - Add ReflectionClass::getInterfaceNames()
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/reflection/php_reflection.c?r1=1.232r2=1.233diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.232 
php-src/ext/reflection/php_reflection.c:1.233
--- php-src/ext/reflection/php_reflection.c:1.232   Sun Jun  4 10:11:48 2006
+++ php-src/ext/reflection/php_reflection.c Wed Jun  7 09:11:58 2006
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.232 2006/06/04 10:11:48 helly Exp $ */
+/* $Id: php_reflection.c,v 1.233 2006/06/07 09:11:58 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -3441,6 +3441,26 @@
 }
 /* }}} */
 
+/* {{{ proto public String[] ReflectionClass::getInterfaceNames()
+   Returns an array of names of interfaces this class implements */
+ZEND_METHOD(reflection_class, getInterfaceNames)
+{
+   reflection_object *intern;
+   zend_class_entry *ce;
+   zend_uint i;
+
+   METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
+   GET_REFLECTION_OBJECT_PTR(ce);
+
+   /* Return an empty array if this class implements no interfaces */
+   array_init(return_value);
+
+   for (i=0; i  ce-num_interfaces; i++) {
+   add_next_index_textl(return_value, ce-interfaces[i]-name, 
ce-interfaces[i]-name_length, 1);
+   }
+}
+/* }}} */
+
 /* {{{ proto public ReflectionClass ReflectionClass::getParentClass()
Returns the class' parent class, or, if none exists, FALSE */
 ZEND_METHOD(reflection_class, getParentClass)
@@ -4176,8 +4196,7 @@
/* FIXME: Unicode support??? */
add_assoc_zval_ex(class_array, (*pce)-name.s, 
(*pce)-name_length + 1, zclass);
} else {
-   /* FIXME: Unicode support??? */
-   add_next_index_stringl(class_array, (*pce)-name.s, 
(*pce)-name_length, 1);
+   add_next_index_textl(class_array, (*pce)-name, 
(*pce)-name_length, 1);
}
}
return ZEND_HASH_APPLY_KEEP;
@@ -4352,6 +4371,7 @@
ZEND_ME(reflection_class, getConstants, NULL, 0)
ZEND_ME(reflection_class, getConstant, NULL, 0)
ZEND_ME(reflection_class, getInterfaces, NULL, 0)
+   ZEND_ME(reflection_class, getInterfaceNames, NULL, 0)
ZEND_ME(reflection_class, isInterface, NULL, 0)
ZEND_ME(reflection_class, isAbstract, NULL, 0)
ZEND_ME(reflection_class, isFinal, NULL, 0)
@@ -4543,7 +4563,7 @@
php_info_print_table_start();
php_info_print_table_header(2, Reflection, enabled);
 
-   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.232 
2006/06/04 10:11:48 helly Exp $);
+   php_info_print_table_row(2, Version, $Id: php_reflection.c,v 1.233 
2006/06/07 09:11:58 helly Exp $);
 
php_info_print_table_end();
 } /* }}} */

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



  1   2   >