[Spice-devel] [PATCH 3/3] Don't abort if encoder cannot be created
Pavel Grunt
pgrunt at redhat.com
Wed Nov 18 02:12:00 PST 2015
Hi,
On Tue, 2015-11-17 at 16:38 -0600, Jonathon Jongsma wrote:
> Instead of using spice_critical() when an encoder cannot be created, use
> a warning so that the server doesn't abort.
I haven't seen an abort because of it, and I think abort is correct, otherwise
you may end up calling encode functions like zlib_encode(dcc->zlib,...
with dcc->zlib = NULL, so it will crash
Pavel
> ---
> server/dcc-encoders.c | 24 +++++-------------------
> 1 file changed, 5 insertions(+), 19 deletions(-)
>
> diff --git a/server/dcc-encoders.c b/server/dcc-encoders.c
> index 35edd41..42c3364 100644
> --- a/server/dcc-encoders.c
> +++ b/server/dcc-encoders.c
> @@ -292,10 +292,7 @@ static void dcc_init_quic(DisplayChannelClient *dcc)
> dcc->quic_data.usr.more_lines = quic_usr_more_lines;
>
> dcc->quic = quic_create(&dcc->quic_data.usr);
> -
> - if (!dcc->quic) {
> - spice_critical("create quic failed");
> - }
> + spice_warn_if_fail(dcc->quic);
> }
>
> static void dcc_init_lz(DisplayChannelClient *dcc)
> @@ -309,10 +306,7 @@ static void dcc_init_lz(DisplayChannelClient *dcc)
> dcc->lz_data.usr.more_lines = lz_usr_more_lines;
>
> dcc->lz = lz_create(&dcc->lz_data.usr);
> -
> - if (!dcc->lz) {
> - spice_critical("create lz failed");
> - }
> + spice_warn_if_fail(dcc->lz);
> }
>
> static void glz_usr_free_image(GlzEncoderUsrContext *usr, GlzUsrImageContext
> *image)
> @@ -356,10 +350,7 @@ static void dcc_init_jpeg(DisplayChannelClient *dcc)
> dcc->jpeg_data.usr.more_lines = jpeg_usr_more_lines;
>
> dcc->jpeg = jpeg_encoder_create(&dcc->jpeg_data.usr);
> -
> - if (!dcc->jpeg) {
> - spice_critical("create jpeg encoder failed");
> - }
> + spice_warn_if_fail(dcc->jpeg);
> }
>
> #ifdef USE_LZ4
> @@ -370,9 +361,7 @@ static inline void dcc_init_lz4(DisplayChannelClient *dcc)
>
> dcc->lz4 = lz4_encoder_create(&dcc->lz4_data.usr);
>
> - if (!dcc->lz4) {
> - spice_critical("create lz4 encoder failed");
> - }
> + spice_warn_if_fail(dcc->lz4);
> }
> #endif
>
> @@ -382,10 +371,7 @@ static void dcc_init_zlib(DisplayChannelClient *dcc)
> dcc->zlib_data.usr.more_input = zlib_usr_more_input;
>
> dcc->zlib = zlib_encoder_create(&dcc->zlib_data.usr,
> ZLIB_DEFAULT_COMPRESSION_LEVEL);
> -
> - if (!dcc->zlib) {
> - spice_critical("create zlib encoder failed");
> - }
> + spice_warn_if_fail(dcc->zlib);
> }
>
> void dcc_encoders_init(DisplayChannelClient *dcc)
More information about the Spice-devel
mailing list