Edit report at https://bugs.php.net/bug.php?id=64936&edit=1

 ID:                 64936
 Updated by:         s...@php.net
 Reported by:        jonathan at moo dot com
 Summary:            doc comments picked up from previous scanner run
-Status:             Open
+Status:             Closed
 Type:               Bug
 Package:            Reflection related
 PHP Version:        master-Git-2013-05-28 (Git)
 Block user comment: N
 Private report:     N

 New Comment:

Automatic comment on behalf of stas
Revision: 
http://git.php.net/?p=php-src.git;a=commit;h=2208447d428542960c73cfeceaf52e95ff0ca2d0
Log: Fix bug #64936 - clean doc comment state at the beginning and end of the 
scan


Previous Comments:
------------------------------------------------------------------------
[2013-05-28 12:58:19] jonathan at moo dot com

Description:
------------
The doc_comment compiler global is not reset when scanning of a new file/string 
starts. This leads to the last doc_comment seen by the tokenizer, but unclaimed 
by anything, being incorrectly assigned to the next thing the compiler sees.

I think that the doc_comment and doc_comment_len globals should probably be 
saved/restored by zend_(save|restore)_lexical_state, and reset whenever 
scanning 
for a new file or string starts (pretty much everywhere zend_lineno gets 
initialised.)

Test script:
---------------
token_get_all("<?php\n/**\n * Foo\n */"); // doc_comment compiler global now 
contains this Foo comment

eval("class Foo { }"); // Could also be an include of a file containing similar

$rc = new ReflectionClass("Foo");
var_dump($rc->getDocComment()); // Foo shouldn't have a doc comment, and yet it 
does.

Expected result:
----------------
bool(false)

Actual result:
--------------
string(14) "/**\n * Foo\n */"


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=64936&edit=1

Reply via email to