|
@@ -1791,7 +1791,7 @@ static void php_v8js_create_script_exception(zval *return_value, v8::TryCatch *t
|
|
|
v8::Handle<v8::Message> tc_message = try_catch->Message();
|
|
|
const char *filename_string, *sourceline_string;
|
|
|
char *message_string;
|
|
|
- int linenum, message_len;
|
|
|
+ int linenum, start_col, end_col, message_len;
|
|
|
|
|
|
object_init_ex(return_value, php_ce_v8js_script_exception);
|
|
|
|
|
@@ -1814,6 +1814,12 @@ static void php_v8js_create_script_exception(zval *return_value, v8::TryCatch *t
|
|
|
linenum = tc_message->GetLineNumber();
|
|
|
PHPV8_EXPROP(_long, JsLineNumber, linenum);
|
|
|
|
|
|
+ start_col = tc_message->GetStartColumn();
|
|
|
+ PHPV8_EXPROP(_long, JsStartColumn, start_col);
|
|
|
+
|
|
|
+ end_col = tc_message->GetEndColumn();
|
|
|
+ PHPV8_EXPROP(_long, JsEndColumn, end_col);
|
|
|
+
|
|
|
message_len = spprintf(&message_string, 0, "%s:%d: %s", filename_string, linenum, exception_string);
|
|
|
|
|
|
v8::String::Utf8Value stacktrace(try_catch->StackTrace());
|
|
@@ -1869,6 +1875,16 @@ V8JS_EXCEPTION_METHOD(JsFileName);
|
|
|
V8JS_EXCEPTION_METHOD(JsLineNumber);
|
|
|
/* }}} */
|
|
|
|
|
|
+/* {{{ proto string V8JsScriptException::getJsStartColumn()
|
|
|
+ */
|
|
|
+V8JS_EXCEPTION_METHOD(JsStartColumn);
|
|
|
+/* }}} */
|
|
|
+
|
|
|
+/* {{{ proto string V8JsScriptException::getJsEndColumn()
|
|
|
+ */
|
|
|
+V8JS_EXCEPTION_METHOD(JsEndColumn);
|
|
|
+/* }}} */
|
|
|
+
|
|
|
/* {{{ proto string V8JsScriptException::getJsSourceLine()
|
|
|
*/
|
|
|
V8JS_EXCEPTION_METHOD(JsSourceLine);
|
|
@@ -1882,6 +1898,8 @@ V8JS_EXCEPTION_METHOD(JsTrace);
|
|
|
static const zend_function_entry v8js_script_exception_methods[] = { /* {{{ */
|
|
|
PHP_ME(V8JsScriptException, getJsFileName, arginfo_v8jsscriptexception_no_args, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
|
|
|
PHP_ME(V8JsScriptException, getJsLineNumber, arginfo_v8jsscriptexception_no_args, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
|
|
|
+ PHP_ME(V8JsScriptException, getJsStartColumn, arginfo_v8jsscriptexception_no_args, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
|
|
|
+ PHP_ME(V8JsScriptException, getJsEndColumn, arginfo_v8jsscriptexception_no_args, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
|
|
|
PHP_ME(V8JsScriptException, getJsSourceLine, arginfo_v8jsscriptexception_no_args, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
|
|
|
PHP_ME(V8JsScriptException, getJsTrace, arginfo_v8jsscriptexception_no_args, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
|
|
|
{NULL, NULL, NULL}
|
|
@@ -1973,8 +1991,10 @@ static PHP_MINIT_FUNCTION(v8js)
|
|
|
|
|
|
/* Add custom JS specific properties */
|
|
|
zend_declare_property_null(php_ce_v8js_script_exception, ZEND_STRL("JsFileName"), ZEND_ACC_PROTECTED TSRMLS_CC);
|
|
|
- zend_declare_property_null(php_ce_v8js_script_exception, ZEND_STRL("JsLineNumber"), ZEND_ACC_PROTECTED TSRMLS_CC);
|
|
|
- zend_declare_property_null(php_ce_v8js_script_exception, ZEND_STRL("JsSourceLine"), ZEND_ACC_PROTECTED TSRMLS_CC);
|
|
|
+ zend_declare_property_null(php_ce_v8js_script_exception, ZEND_STRL("JsLineNumber"), ZEND_ACC_PROTECTED TSRMLS_CC);
|
|
|
+ zend_declare_property_null(php_ce_v8js_script_exception, ZEND_STRL("JsStartColumn"), ZEND_ACC_PROTECTED TSRMLS_CC);
|
|
|
+ zend_declare_property_null(php_ce_v8js_script_exception, ZEND_STRL("JsEndColumn"), ZEND_ACC_PROTECTED TSRMLS_CC);
|
|
|
+ zend_declare_property_null(php_ce_v8js_script_exception, ZEND_STRL("JsSourceLine"), ZEND_ACC_PROTECTED TSRMLS_CC);
|
|
|
zend_declare_property_null(php_ce_v8js_script_exception, ZEND_STRL("JsTrace"), ZEND_ACC_PROTECTED TSRMLS_CC);
|
|
|
|
|
|
/* V8JsTimeLimitException Class */
|