From a6502f922d46783c2e278cd7d38ce2e025a4268f Mon Sep 17 00:00:00 2001 From: Alexey Fedoseev Date: Thu, 25 Apr 2024 13:40:54 +0300 Subject: [PATCH] correct bug with the string trim algorithm --- cyberiadaml.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/cyberiadaml.c b/cyberiadaml.c index cda4a9e..ac94d7b 100644 --- a/cyberiadaml.c +++ b/cyberiadaml.c @@ -369,8 +369,10 @@ static int cyberiada_string_trim(char* orig) while(s > orig) { if (isspace(*s)) { *s = 0; + s--; + } else { + break; } - s--; } return 0; } @@ -721,8 +723,8 @@ static int cyberiada_decode_edge_action(const char* text, CyberiadaAction** acti } } if (cyberiaga_matchres_action_regexps(buffer, - pmatch, CYBERIADA_ACTION_REGEXP_MATCHES, - &trigger, &guard, &behavior) != CYBERIADA_NO_ERROR) { + pmatch, CYBERIADA_ACTION_REGEXP_MATCHES, + &trigger, &guard, &behavior) != CYBERIADA_NO_ERROR) { return CYBERIADA_ASSERT; } @@ -3227,7 +3229,11 @@ static int cyberiada_write_action_text(xmlTextWriterPtr writer, CyberiadaAction* } } else { if (*(action->guard)) { - snprintf(buffer, buffer_len, "%s [%s]/", action->trigger, action->guard); + if (*(action->trigger)) { + snprintf(buffer, buffer_len, "%s [%s]/", action->trigger, action->guard); + } else { + snprintf(buffer, buffer_len, "[%s]/", action->guard); + } } else { snprintf(buffer, buffer_len, "%s/", action->trigger); }