From 5aede8cba88db9511bf6e8bd8a0f710be0d78673 Mon Sep 17 00:00:00 2001 From: Paul Tarjan Date: Thu, 25 Apr 2013 17:49:50 -0700 Subject: [PATCH] fix segfault Don't assume we are in a function. --- hphp/compiler/parser/parser.cpp | 4 +++- hphp/test/zend/good/zend/020.php | 18 ++++++++++++++++++ hphp/test/zend/good/zend/020.php.expectf | 9 +++++++++ hphp/tools/import_zend_test.py | 1 - 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 hphp/test/zend/good/zend/020.php create mode 100644 hphp/test/zend/good/zend/020.php.expectf diff --git a/hphp/compiler/parser/parser.cpp b/hphp/compiler/parser/parser.cpp index aa40ec12b..b5f5806b4 100644 --- a/hphp/compiler/parser/parser.cpp +++ b/hphp/compiler/parser/parser.cpp @@ -400,7 +400,9 @@ void Parser::onCall(Token &out, bool dynamic, Token &name, Token ¶ms, } else { const string &s = name.text(); if (s == "func_num_args" || s == "func_get_args" || s == "func_get_arg") { - m_hasCallToGetArgs.back() = true; + if (m_hasCallToGetArgs.size() > 0) { + m_hasCallToGetArgs.back() = true; + } } SimpleFunctionCallPtr call diff --git a/hphp/test/zend/good/zend/020.php b/hphp/test/zend/good/zend/020.php new file mode 100644 index 000000000..a7011d988 --- /dev/null +++ b/hphp/test/zend/good/zend/020.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/hphp/test/zend/good/zend/020.php.expectf b/hphp/test/zend/good/zend/020.php.expectf new file mode 100644 index 000000000..2b85b487d --- /dev/null +++ b/hphp/test/zend/good/zend/020.php.expectf @@ -0,0 +1,9 @@ +HipHop Warning: %a +NULL +HipHop Warning: %a +bool(false) +HipHop Warning: %a +NULL +HipHop Warning: %a +bool(false) +Done \ No newline at end of file diff --git a/hphp/tools/import_zend_test.py b/hphp/tools/import_zend_test.py index 05e4d781d..b6348872a 100755 --- a/hphp/tools/import_zend_test.py +++ b/hphp/tools/import_zend_test.py @@ -35,7 +35,6 @@ no_import = ( '/tests/run-test/test010.phpt', # segfaults - '/Zend/tests/020.phpt', '/Zend/tests/bug35239.phpt', '/Zend/tests/bug54265.phpt', '/Zend/tests/bug55705.phpt',