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 <berra...@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; -- 1.7.1 _______________________________________________ Spice-devel mailing list Spice-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/spice-devel