From: Øyvind Kolås Date: Fri, 16 Nov 2018 00:50:22 +0000 (+0100) Subject: babl-fish: print error message instead of blowing stack X-Git-Tag: archive/raspbian/1%0.1.106-3+rpi1^2~15^2~12^2~55 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b4711587366d0fdcd410e8aacacef10d5dae7f4f;p=babl.git babl-fish: print error message instead of blowing stack --- diff --git a/babl/babl-fish.c b/babl/babl-fish.c index 65c482e..8c239eb 100644 --- a/babl/babl-fish.c +++ b/babl/babl-fish.c @@ -104,11 +104,13 @@ match_conversion (Babl *conversion, { void **data = inout; + if ((Babl *) conversion->conversion.destination == (Babl *) *data) { *data = (void *) conversion; return 1; } + return 0; } @@ -123,14 +125,26 @@ babl_conversion_find (const void *source, if (BABL (source)->type.from_list) babl_list_each (BABL (source)->type.from_list, match_conversion, &data); if (data != (void*)destination) /* didn't change */ + { return data; + } data = NULL; if (BABL (source)->class_type == BABL_MODEL) { const Babl *srgb_source = BABL (source)->model.model ? BABL (source)->model.model:source; const Babl *srgb_destination = BABL (destination)->model.model ? BABL (destination)->model.model:destination; - Babl *reference = babl_conversion_find (srgb_source, srgb_destination); + + + Babl *reference; + + if (srgb_source == source && srgb_destination == destination) + { + fprintf (stderr, "expected finding model conversion %s to %s", babl_get_name (source), babl_get_name (destination)); + return NULL; + } + + reference = babl_conversion_find (srgb_source, srgb_destination); /* when conversions are sought between models, with non-sRGB chromaticities, we create the needed conversions from existing ones on the fly, and