char *origin;
char *message;
char *stage;
+ int function_name_is_string = 1;
/* get error text into buffer and escape for html if necessary */
buffer_len = vspprintf(&buffer, 0, format, args);
stage = "Unknown";
}
} else {
+ function_name_is_string = 0;
function = get_active_function_name(TSRMLS_C);
if (!function || !USTR_LEN(function)) {
stage = "Unknown";
/* if we still have memory then format the origin */
if (function) {
- spprintf(&origin, 0, "%v%s%v(%s)", class_name, space, function, params);
+ if (function_name_is_string) {
+ origin_len = spprintf(&origin, 0, "%v%s%s(%s)", class_name, space, function, params);
+ } else {
+ origin_len = spprintf(&origin, 0, "%v%s%v(%s)", class_name, space, function, params);
+ }
} else {
- spprintf(&origin, 0, "%s", stage);
+ origin_len = spprintf(&origin, 0, "%s", stage);
}
if (PG(html_errors)) {
char *replace = php_escape_html_entities(origin, origin_len, &len, 0, ENT_COMPAT, NULL TSRMLS_CC);
efree(origin);
origin = replace;
- }
+ }
/* origin and buffer available, so lets come up with the error message */
if (docref && docref[0] == '#') {
/* no docref given but function is known (the default) */
if (!docref && function) {
- spprintf(&docref_buf, 0, "function.%v", function);
+ if (function_name_is_string) {
+ spprintf(&docref_buf, 0, "function.%s", function);
+ } else {
+ spprintf(&docref_buf, 0, "function.%v", function);
+ }
while((p = strchr(docref_buf, '_')) != NULL) {
*p = '-';
}