Fix various issues reported on github (#2280)

* Desktop: Fix use after free in slideshow view
* Gui: long press toggles first letter case too
* Desktop: remove debug logging
This commit is contained in:
あく 2023-01-10 03:15:03 +09:00 committed by GitHub
parent b7046b2179
commit 8d2143add5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 6 deletions

View File

@ -56,7 +56,7 @@ static bool desktop_view_slideshow_input(InputEvent* event, void* context) {
instance->callback(DesktopSlideshowCompleted, instance->context); instance->callback(DesktopSlideshowCompleted, instance->context);
} }
update_view = true; update_view = true;
} else if(event->key == InputKeyOk) { } else if(event->key == InputKeyOk && instance->timer) {
if(event->type == InputTypePress) { if(event->type == InputTypePress) {
furi_timer_start(instance->timer, DESKTOP_SLIDESHOW_POWEROFF_SHORT); furi_timer_start(instance->timer, DESKTOP_SLIDESHOW_POWEROFF_SHORT);
} else if(event->type == InputTypeRelease) { } else if(event->type == InputTypeRelease) {

View File

@ -138,7 +138,7 @@ static bool char_is_lowercase(char letter) {
static char char_to_uppercase(const char letter) { static char char_to_uppercase(const char letter) {
if(letter == '_') { if(letter == '_') {
return 0x20; return 0x20;
} else if(isalpha(letter)) { } else if(islower(letter)) {
return (letter - 0x20); return (letter - 0x20);
} else { } else {
return letter; return letter;
@ -309,7 +309,9 @@ static void text_input_handle_ok(TextInput* text_input, TextInputModel* model, b
char selected = get_selected_char(model); char selected = get_selected_char(model);
size_t text_length = strlen(model->text_buffer); size_t text_length = strlen(model->text_buffer);
if(shift) { bool toogle_case = text_length == 0;
if(shift) toogle_case = !toogle_case;
if(toogle_case) {
selected = char_to_uppercase(selected); selected = char_to_uppercase(selected);
} }
@ -329,9 +331,6 @@ static void text_input_handle_ok(TextInput* text_input, TextInputModel* model, b
text_length = 0; text_length = 0;
} }
if(text_length < (model->text_buffer_size - 1)) { if(text_length < (model->text_buffer_size - 1)) {
if(text_length == 0 && char_is_lowercase(selected)) {
selected = char_to_uppercase(selected);
}
model->text_buffer[text_length] = selected; model->text_buffer[text_length] = selected;
model->text_buffer[text_length + 1] = 0; model->text_buffer[text_length + 1] = 0;
} }