diff --git a/src/xml/lv_xml.c b/src/xml/lv_xml.c index 93795a49a2..7f38e38b27 100644 --- a/src/xml/lv_xml.c +++ b/src/xml/lv_xml.c @@ -794,6 +794,10 @@ static void resolve_consts(const char ** item_attrs, lv_xml_component_scope_t * if(lv_streq(name, "styles")) continue; /*Styles will handle it themselves*/ if(value[0] == '#') { const char * value_clean = &value[1]; + /* if there's no constant value, we keep `#` as is */ + if(*value_clean == '\0') { + continue; + } const char * const_value = lv_xml_get_const(scope, value_clean); if(const_value) { diff --git a/tests/src/test_cases/xml/test_xml_general.c b/tests/src/test_cases/xml/test_xml_general.c index d4e4d6895b..5880372e9b 100644 --- a/tests/src/test_cases/xml/test_xml_general.c +++ b/tests/src/test_cases/xml/test_xml_general.c @@ -365,4 +365,19 @@ void test_xml_complex(void) TEST_ASSERT_EQUAL_SCREENSHOT("xml/complex_1.png"); } +void test_xml_label_pound_sign_gets_rendered_properly(void) +{ + const char * my_screen = + "" + "" + "" + "" + ""; + lv_xml_register_component_from_data("screen", my_screen); + lv_obj_t * scr = lv_xml_create_screen("screen"); + lv_screen_load(scr); + lv_obj_t * label = lv_obj_get_child(scr, 0); + TEST_ASSERT(lv_streq("#", lv_label_get_text(label))); +} + #endif