diff --git a/Apps/BibleVerse/main/Source/main.c b/Apps/BibleVerse/main/Source/main.c index 8465d63..b534fae 100644 --- a/Apps/BibleVerse/main/Source/main.c +++ b/Apps/BibleVerse/main/Source/main.c @@ -33,7 +33,7 @@ LV_FONT_DECLARE(georgia_regular_24) #define MAX_BIBLE_BOOKS 66 #define MAX_BOOK_NAME 40 #define MAX_VERSE_TEXT 2048 -#define MAX_PATH 320 +#define MAX_PATH 128 typedef struct { uint32_t offset; @@ -239,7 +239,7 @@ static bool parse_books_json(AppCtx* ctx, const char* json_str) { const char* obj_end = strchr(obj_start, '}'); if (!obj_end) break; // parse fields within obj_start..obj_end - char temp[512]; + char temp[256]; size_t len = (size_t)(obj_end - obj_start + 1); if (len >= sizeof(temp)) len = sizeof(temp)-1; memcpy(temp, obj_start, len); @@ -672,27 +672,27 @@ static void show_current_verse(AppCtx* ctx) { const char* text_ptr = "(empty)"; if (off < ctx->book_bin_size) text_ptr = (const char*)(ctx->book_bin + off); - char verse_buf[MAX_VERSE_TEXT]; - strncpy(verse_buf, text_ptr, sizeof(verse_buf)-1); - verse_buf[sizeof(verse_buf)-1]='\0'; + // Fix stack overflow: verse_buf was 2048 bytes on stack, causing gui task (4096) overflow + // Use heap allocation + char* verse_buf = (char*)malloc(MAX_VERSE_TEXT); + if (!verse_buf) { + ESP_LOGE(TAG, "Failed to malloc verse_buf"); + return; + } + strncpy(verse_buf, text_ptr, MAX_VERSE_TEXT-1); + verse_buf[MAX_VERSE_TEXT-1]='\0'; - char ref_buf[96]; + char ref_buf[64]; snprintf(ref_buf, sizeof(ref_buf), "%s %d:%d", ctx->books[ctx->cur_book_idx].bname, vi->cnum, vi->vnum); - // Editorial reference style like your image: "PSALMS 23:1" with tracking - char ref_pretty[108]; - // Use uppercase for book? Keep title for now but uppercase style for editorial match - // We'll format as "— PSALMS 23:1 —" feel? For dark mode keep minimal like ref image - // Reference image shows lines flanking citation - we do with letterspacing + dim - // For now: "PSALMS 23:1" style - uppercase via runtime? We'll uppercase book name - char bname_upper[48]; + char ref_pretty[80]; + char bname_upper[40]; strncpy(bname_upper, ctx->books[ctx->cur_book_idx].bname, sizeof(bname_upper)-1); bname_upper[sizeof(bname_upper)-1]='\0'; for (char* p=bname_upper; *p; ++p) *p = toupper((unsigned char)*p); snprintf(ref_pretty, sizeof(ref_pretty), "%s %d:%d", bname_upper, vi->cnum, vi->vnum); if (ctx->lbl_verse) { - // start faded for transition lv_obj_set_style_text_opa(ctx->lbl_verse, 60, 0); lv_label_set_text(ctx->lbl_verse, verse_buf); apply_verse_scaling(ctx, verse_buf); @@ -741,6 +741,7 @@ static void show_current_verse(AppCtx* ctx) { if (ctx->cur_global >= ctx->total_verses-1) lv_obj_add_state(ctx->btn_next, LV_STATE_DISABLED); else lv_obj_clear_state(ctx->btn_next, LV_STATE_DISABLED); } + free(verse_buf); save_progress(ctx); verse_fade_in(ctx); } diff --git a/Apps/BibleVerse/manifest.properties b/Apps/BibleVerse/manifest.properties index c9a3245..09be273 100644 --- a/Apps/BibleVerse/manifest.properties +++ b/Apps/BibleVerse/manifest.properties @@ -1,11 +1,8 @@ -[manifest] -version=0.1 -[target] -sdk=0.8.0-dev -platforms=esp32s3,esp32p4 -[app] -id=one.tactility.bibleverse -versionName=0.1.0 -versionCode=1 -name=Bible Verse -description=Single verse at a time, advances each minute. Tap to show controls. +manifest.version=0.2 +target.sdk=0.8.0-dev +target.platforms=esp32s3,esp32p4 +app.id=one.tactility.bibleverse +app.version.name=0.1.0 +app.version.code=2 +app.name=Bible Verse +app.description=Single verse at a time, advances each minute. Tap to show controls.