[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