diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/skin_parser/skin_debug.c | 3 | ||||
-rw-r--r-- | lib/skin_parser/skin_parser.c | 6 | ||||
-rw-r--r-- | lib/skin_parser/skin_parser.h | 3 |
3 files changed, 11 insertions, 1 deletions
diff --git a/lib/skin_parser/skin_debug.c b/lib/skin_parser/skin_debug.c index 9537182341..a2042744b9 100644 --- a/lib/skin_parser/skin_debug.c +++ b/lib/skin_parser/skin_debug.c @@ -105,6 +105,9 @@ void skin_error(enum skin_errorcode error, const char* cursor) case MULTILINE_EXPECTED: error_message = "Expected subline separator"; break; + case GOT_CALLBACK_ERROR: + error_message = "Parser callback returned error"; + break; }; } diff --git a/lib/skin_parser/skin_parser.c b/lib/skin_parser/skin_parser.c index 1f4b87a328..39a41e9dd3 100644 --- a/lib/skin_parser/skin_parser.c +++ b/lib/skin_parser/skin_parser.c @@ -546,7 +546,10 @@ static int skin_parse_tag(struct skin_element* element, const char** document) if (callback) { if (callback(element, callback_data) == CALLBACK_ERROR) + { + skin_error(GOT_CALLBACK_ERROR, cursor); return 0; + } } #endif *document = cursor; @@ -822,7 +825,10 @@ static int skin_parse_tag(struct skin_element* element, const char** document) if (callback) { if (callback(element, callback_data) == CALLBACK_ERROR) + { + skin_error(GOT_CALLBACK_ERROR, *document); return 0; + } } #endif *document = cursor; diff --git a/lib/skin_parser/skin_parser.h b/lib/skin_parser/skin_parser.h index ec51b64c8b..c53896ca30 100644 --- a/lib/skin_parser/skin_parser.h +++ b/lib/skin_parser/skin_parser.h @@ -79,7 +79,8 @@ enum skin_errorcode DECIMAL_EXPECTED, SEPARATOR_EXPECTED, CLOSE_EXPECTED, - MULTILINE_EXPECTED + MULTILINE_EXPECTED, + GOT_CALLBACK_ERROR }; /* Holds a tag parameter, either numeric or text */ |