[Spice-devel] [PATCH spice] Add some more 'noreturn' annotations

Hans de Goede hdegoede at redhat.com
Wed Apr 25 04:47:26 PDT 2012


ACK.

On 04/25/2012 12:33 PM, Daniel P. Berrange wrote:
> Methods which longjump, unconditionally raise an
> exception, or call _exit()  cannot return control
> to the caller so should be annotated with 'noreturn'
>
> Signed-off-by: Daniel P. Berrange<berrange at redhat.com>
> ---
>   client/canvas.h         |    2 +-
>   client/jpeg_decoder.cpp |    3 +--
>   client/red_client.h     |    2 +-
>   client/red_peer.cpp     |    2 +-
>   client/x11/platform.cpp |    3 +--
>   server/red_worker.c     |    6 ++++--
>   6 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/client/canvas.h b/client/canvas.h
> index cd6a89b..7702568 100644
> --- a/client/canvas.h
> +++ b/client/canvas.h
> @@ -252,7 +252,7 @@ public:
>   /* TODO: unite with the window debug callbacks? */
>   class GlzDecoderCanvasDebug: public GlzDecoderDebug {
>   public:
> -    virtual void error(const std::string&  str)
> +    virtual SPICE_GNUC_NORETURN void error(const std::string&  str)
>       {
>           throw Exception(str);
>       }
> diff --git a/client/jpeg_decoder.cpp b/client/jpeg_decoder.cpp
> index 2b2d5e4..c85902f 100644
> --- a/client/jpeg_decoder.cpp
> +++ b/client/jpeg_decoder.cpp
> @@ -52,10 +52,9 @@ extern "C" {
>       {
>       }
>
> -    static jpeg_boolean jpeg_decoder_fill_input_buffer(j_decompress_ptr cinfo)
> +    static SPICE_GNUC_NORETURN jpeg_boolean jpeg_decoder_fill_input_buffer(j_decompress_ptr cinfo)
>       {
>           PANIC("no more data for jpeg");
> -        return FALSE;
>       }
>
>       static void jpeg_decoder_skip_input_data(j_decompress_ptr cinfo, long num_bytes)
> diff --git a/client/red_client.h b/client/red_client.h
> index a2f00c4..c4b418a 100644
> --- a/client/red_client.h
> +++ b/client/red_client.h
> @@ -99,7 +99,7 @@ private:
>
>   class GlzDecoderWindowDebug: public GlzDecoderDebug {
>   public:
> -    virtual void error(const std::string&  str)
> +    virtual SPICE_GNUC_NORETURN void error(const std::string&  str)
>       {
>           throw Exception(str);
>       }
> diff --git a/client/red_peer.cpp b/client/red_peer.cpp
> index 10640c8..d2a6098 100644
> --- a/client/red_peer.cpp
> +++ b/client/red_peer.cpp
> @@ -33,7 +33,7 @@
>   #include "debug.h"
>   #include "platform_utils.h"
>
> -static void ssl_error()
> +static void SPICE_GNUC_NORETURN ssl_error()
>   {
>       unsigned long last_error = ERR_peek_last_error();
>
> diff --git a/client/x11/platform.cpp b/client/x11/platform.cpp
> index f35d537..656c2a5 100644
> --- a/client/x11/platform.cpp
> +++ b/client/x11/platform.cpp
> @@ -3167,11 +3167,10 @@ static int x_error_handler(Display* display, XErrorEvent* error_event)
>       return 0;
>   }
>
> -static int x_io_error_handler(Display* display)
> +static SPICE_GNUC_NORETURN int x_io_error_handler(Display* display)
>   {
>       LOG_ERROR("x io error on %s", XDisplayString(display));
>       _exit(-1);
> -    return 0;
>   }
>
>   static XVisualInfo* get_x_vis_info(int screen)
> diff --git a/server/red_worker.c b/server/red_worker.c
> index e271ae5..297b168 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -5274,7 +5274,8 @@ static int red_display_free_some_independent_glz_drawables(DisplayChannelClient
>   /******************************************************
>    *              Encoders callbacks
>   *******************************************************/
> -static SPICE_GNUC_PRINTF(2, 3) void quic_usr_error(QuicUsrContext *usr, const char *fmt, ...)
> +static SPICE_GNUC_NORETURN SPICE_GNUC_PRINTF(2, 3) void
> +quic_usr_error(QuicUsrContext *usr, const char *fmt, ...)
>   {
>       EncoderData *usr_data =&(((QuicData *)usr)->data);
>       va_list ap;
> @@ -5287,7 +5288,8 @@ static SPICE_GNUC_PRINTF(2, 3) void quic_usr_error(QuicUsrContext *usr, const ch
>       longjmp(usr_data->jmp_env, 1);
>   }
>
> -static SPICE_GNUC_PRINTF(2, 3) void lz_usr_error(LzUsrContext *usr, const char *fmt, ...)
> +static SPICE_GNUC_NORETURN SPICE_GNUC_PRINTF(2, 3) void
> +lz_usr_error(LzUsrContext *usr, const char *fmt, ...)
>   {
>       EncoderData *usr_data =&(((LzData *)usr)->data);
>       va_list ap;


More information about the Spice-devel mailing list