Skip to content

Commit f2de309

Browse files
committed
Make libaom encoder diagnostics null-safe
1 parent 3b1384c commit f2de309

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

src/codec_aom.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -510,12 +510,13 @@ static avifBool avifProcessAOMOptionsPostInit(avifCodec * codec, avifBool alpha)
510510
key += shortPrefixLen;
511511
}
512512
if (aom_codec_set_option(&codec->internal->encoder, key, entry->value) != AOM_CODEC_OK) {
513+
const char * error_detail = aom_codec_error_detail(&codec->internal->encoder);
513514
avifDiagnosticsPrintf(codec->diag,
514515
"aom_codec_set_option(\"%s\", \"%s\") failed: %s: %s",
515516
key,
516517
entry->value,
517518
aom_codec_error(&codec->internal->encoder),
518-
aom_codec_error_detail(&codec->internal->encoder));
519+
error_detail ? error_detail : "no error detail");
519520
return AVIF_FALSE;
520521
}
521522
#else // !defined(HAVE_AOM_CODEC_SET_OPTION)
@@ -953,10 +954,11 @@ static avifResult aomCodecEncodeImage(avifCodec * codec,
953954
encoderFlags |= AOM_CODEC_USE_HIGHBITDEPTH;
954955
}
955956
if (aom_codec_enc_init(&codec->internal->encoder, encoderInterface, cfg, encoderFlags) != AOM_CODEC_OK) {
957+
const char * error_detail = aom_codec_error_detail(&codec->internal->encoder);
956958
avifDiagnosticsPrintf(codec->diag,
957959
"aom_codec_enc_init() failed: %s: %s",
958960
aom_codec_error(&codec->internal->encoder),
959-
aom_codec_error_detail(&codec->internal->encoder));
961+
error_detail ? error_detail : "no error detail");
960962
return AVIF_RESULT_UNKNOWN_ERROR;
961963
}
962964
codec->internal->encoderInitialized = AVIF_TRUE;
@@ -1107,10 +1109,11 @@ static avifResult aomCodecEncodeImage(avifCodec * codec,
11071109
if (quantizerUpdated || dimensionsChanged) {
11081110
aom_codec_err_t err = aom_codec_enc_config_set(&codec->internal->encoder, cfg);
11091111
if (err != AOM_CODEC_OK) {
1112+
const char * error_detail = aom_codec_error_detail(&codec->internal->encoder);
11101113
avifDiagnosticsPrintf(codec->diag,
11111114
"aom_codec_enc_config_set() failed: %s: %s",
11121115
aom_codec_error(&codec->internal->encoder),
1113-
aom_codec_error_detail(&codec->internal->encoder));
1116+
error_detail ? error_detail : "no error detail");
11141117
return AVIF_RESULT_UNKNOWN_ERROR;
11151118
}
11161119
}
@@ -1282,10 +1285,11 @@ static avifResult aomCodecEncodeImage(avifCodec * codec,
12821285
aom_img_free(&aomImage);
12831286
}
12841287
if (encodeErr != AOM_CODEC_OK) {
1288+
const char * error_detail = aom_codec_error_detail(&codec->internal->encoder);
12851289
avifDiagnosticsPrintf(codec->diag,
12861290
"aom_codec_encode() failed: %s: %s",
12871291
aom_codec_error(&codec->internal->encoder),
1288-
aom_codec_error_detail(&codec->internal->encoder));
1292+
error_detail ? error_detail : "no error detail");
12891293
return AVIF_RESULT_UNKNOWN_ERROR;
12901294
}
12911295

@@ -1326,10 +1330,11 @@ static avifBool aomCodecEncodeFinish(avifCodec * codec, avifCodecEncodeOutput *
13261330
for (;;) {
13271331
// flush encoder
13281332
if (aom_codec_encode(&codec->internal->encoder, NULL, 0, 1, 0) != AOM_CODEC_OK) {
1333+
const char * error_detail = aom_codec_error_detail(&codec->internal->encoder);
13291334
avifDiagnosticsPrintf(codec->diag,
13301335
"aom_codec_encode() with img=NULL failed: %s: %s",
13311336
aom_codec_error(&codec->internal->encoder),
1332-
aom_codec_error_detail(&codec->internal->encoder));
1337+
error_detail ? error_detail : "no error detail");
13331338
return AVIF_FALSE;
13341339
}
13351340

0 commit comments

Comments
 (0)