Message ID | 20221218171539.11193-8-vr_qemu@t-online.de |
---|---|
State | New |
Headers | show |
Series | audio: more improvements | expand |
On 12/18/22 09:15, Volker Rümelin wrote: > Replace audio_calloc() with the equivalent g_new0(). > > With a n_structs argument >= 1, g_new0() never returns NULL. > Also remove the unnecessary NULL checks. > > Signed-off-by: Volker Rümelin<vr_qemu@t-online.de> > --- > audio/audio_template.h | 23 ++++++----------------- > 1 file changed, 6 insertions(+), 17 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On Sun, Dec 18, 2022 at 06:15:36PM +0100, Volker Rümelin wrote: > Replace audio_calloc() with the equivalent g_new0(). > > With a n_structs argument >= 1, g_new0() never returns NULL. > Also remove the unnecessary NULL checks. > > Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> > --- > audio/audio_template.h | 23 ++++++----------------- > 1 file changed, 6 insertions(+), 17 deletions(-) > > diff --git a/audio/audio_template.h b/audio/audio_template.h > index 5f51ef26b2..9c600448fb 100644 > --- a/audio/audio_template.h > +++ b/audio/audio_template.h > @@ -129,12 +129,7 @@ static int glue (audio_pcm_sw_alloc_resources_, TYPE) (SW *sw) > return -1; > } > > - sw->buf = audio_calloc(__func__, samples, sizeof(struct st_sample)); > - if (!sw->buf) { > - dolog ("Could not allocate buffer for `%s' (%d samples)\n", > - SW_NAME (sw), samples); > - return -1; > - } > + sw->buf = g_new0(st_sample, samples); "samples" is a signed integer, and audio_calloc would check for it being negative and raise an error. It would also check for samples being zero. I think we still need both these checks, as a negative value of samples when cast to size_t would be a huge size. With regards, Daniel
Am 16.01.23 um 10:03 schrieb Daniel P. Berrangé: > On Sun, Dec 18, 2022 at 06:15:36PM +0100, Volker Rümelin wrote: >> Replace audio_calloc() with the equivalent g_new0(). >> >> With a n_structs argument >= 1, g_new0() never returns NULL. >> Also remove the unnecessary NULL checks. >> >> Signed-off-by: Volker Rümelin<vr_qemu@t-online.de> >> --- >> audio/audio_template.h | 23 ++++++----------------- >> 1 file changed, 6 insertions(+), 17 deletions(-) >> >> diff --git a/audio/audio_template.h b/audio/audio_template.h >> index 5f51ef26b2..9c600448fb 100644 >> --- a/audio/audio_template.h >> +++ b/audio/audio_template.h >> @@ -129,12 +129,7 @@ static int glue (audio_pcm_sw_alloc_resources_, TYPE) (SW *sw) >> return -1; >> } >> >> - sw->buf = audio_calloc(__func__, samples, sizeof(struct st_sample)); >> - if (!sw->buf) { >> - dolog ("Could not allocate buffer for `%s' (%d samples)\n", >> - SW_NAME (sw), samples); >> - return -1; >> - } >> + sw->buf = g_new0(st_sample, samples); > "samples" is a signed integer, and audio_calloc would check for > it being negative and raise an error. It would also check for > samples being zero. I think we still need both these checks, > as a negative value of samples when cast to size_t would be a > huge size. Hi Daniel, patch 01/11 ("audio: log unimplemented audio device sample rates") takes care of samples == 0. But you are right, I didn't consider samples < 0. I will send a version 2 patch within the next few days. With best regards, Volker > With regards, > Daniel
diff --git a/audio/audio_template.h b/audio/audio_template.h index 5f51ef26b2..9c600448fb 100644 --- a/audio/audio_template.h +++ b/audio/audio_template.h @@ -129,12 +129,7 @@ static int glue (audio_pcm_sw_alloc_resources_, TYPE) (SW *sw) return -1; } - sw->buf = audio_calloc(__func__, samples, sizeof(struct st_sample)); - if (!sw->buf) { - dolog ("Could not allocate buffer for `%s' (%d samples)\n", - SW_NAME (sw), samples); - return -1; - } + sw->buf = g_new0(st_sample, samples); #ifdef DAC sw->rate = st_rate_start (sw->info.freq, sw->hw->info.freq); @@ -407,34 +402,28 @@ static SW *glue(audio_pcm_create_voice_pair_, TYPE)( hw_as = *as; } - sw = audio_calloc(__func__, 1, sizeof(*sw)); - if (!sw) { - dolog ("Could not allocate soft voice `%s' (%zu bytes)\n", - sw_name ? sw_name : "unknown", sizeof (*sw)); - goto err1; - } + sw = g_new0(SW, 1); sw->s = s; hw = glue(audio_pcm_hw_add_, TYPE)(s, &hw_as); if (!hw) { dolog("Could not create a backend for voice `%s'\n", sw_name); - goto err2; + goto err1; } glue (audio_pcm_hw_add_sw_, TYPE) (hw, sw); if (glue (audio_pcm_sw_init_, TYPE) (sw, hw, sw_name, as)) { - goto err3; + goto err2; } return sw; -err3: +err2: glue (audio_pcm_hw_del_sw_, TYPE) (sw); glue (audio_pcm_hw_gc_, TYPE) (&hw); -err2: - g_free (sw); err1: + g_free(sw); return NULL; }
Replace audio_calloc() with the equivalent g_new0(). With a n_structs argument >= 1, g_new0() never returns NULL. Also remove the unnecessary NULL checks. Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> --- audio/audio_template.h | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-)