From 895ed92496408b538f2dc58a07d4e5ad56d24560 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Thu, 4 Mar 2021 23:31:32 -0500 Subject: [PATCH] Talk.c, playlist.c fix bugs fix bug in talk.c playlist.c only dump voice buffer if we are out of space Change-Id: I75705d755db4193a87e542d062dbdc96b153dbb6 --- apps/playlist.c | 3 ++- apps/talk.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/playlist.c b/apps/playlist.c index af733f486c..6f26b6beda 100644 --- a/apps/playlist.c +++ b/apps/playlist.c @@ -2122,7 +2122,8 @@ int playlist_resume(void) * default buflib buffers can be moved around which must be avoided */ static struct buflib_callbacks dummy_ops; /* use mp3 buffer for maximum load speed */ - talk_buffer_set_policy(TALK_BUFFER_LOOSE); /* back off voice buffer */ + if (core_allocatable() < (1 << 10)) + talk_buffer_set_policy(TALK_BUFFER_LOOSE); /* back off voice buffer */ handle = core_alloc_maximum("temp", &buflen, &dummy_ops); if (handle < 0) panicf("%s(): OOM", __func__); diff --git a/apps/talk.c b/apps/talk.c index 8a428d1ed8..551d9672bc 100644 --- a/apps/talk.c +++ b/apps/talk.c @@ -625,8 +625,10 @@ static bool load_voicefile_data(int fd) metadata_alloc_size = max_clips * sizeof(struct clip_cache_metadata); metadata_table_handle = buflib_alloc(&clip_ctx, metadata_alloc_size); if (metadata_table_handle <= 0) + { talk_status = TALK_STATUS_ERR_OOM; return false; + } memset(buflib_get_data(&clip_ctx, metadata_table_handle), 0, metadata_alloc_size); load_initial_clips(fd);