[Spice-devel] [spice-server PATCH v1 3/12] jpeg_encoder: fix alignment warnings (convert_line)

Victor Toso victortoso at redhat.com
Wed Aug 5 05:23:17 PDT 2015


As the input line could be uint8_t*, uint16_t* or uint32_t*, changing
the default from uint8_t* to void* seems the correct choice to deal with
upcasting warnings.

clang output:
jpeg_encoder.c:109:26: error: cast from 'uint8_t *'
(aka 'unsigned char *') to 'uint16_t *' (aka 'unsigned short *')
increases required alignment from 1 to 2 [-Werror,-Wcast-align]
  uint16_t *src_line = (uint16_t *)line;
                       ^~~~~~~~~~~~~~~~

jpeg_encoder.c:144:26: error: cast from 'uint8_t *'
(aka 'unsigned char *') to 'uint32_t *' (aka 'unsigned int *')
increases required alignment from 1 to 4 [-Werror,-Wcast-align]
  uint32_t *src_line = (uint32_t *)line;
                       ^~~~~~~~~~~~~~~~
---
 server/jpeg_encoder.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/server/jpeg_encoder.c b/server/jpeg_encoder.c
index 01732ff..0296e9b 100644
--- a/server/jpeg_encoder.c
+++ b/server/jpeg_encoder.c
@@ -35,7 +35,7 @@ typedef struct JpegEncoder {
         int height;
         int stride;
         unsigned int out_size;
-        void (*convert_line_to_RGB24) (uint8_t *line, int width, uint8_t **out_line);
+        void (*convert_line_to_RGB24) (void *line, int width, uint8_t **out_line);
     } cur_image;
 } JpegEncoder;
 
@@ -104,9 +104,9 @@ void jpeg_encoder_destroy(JpegEncoderContext* encoder)
     free(encoder);
 }
 
-static void convert_RGB16_to_RGB24(uint8_t *line, int width, uint8_t **out_line)
+static void convert_RGB16_to_RGB24(void *line, int width, uint8_t **out_line)
 {
-    uint16_t *src_line = (uint16_t *)line;
+    uint16_t *src_line = line;
     uint8_t *out_pix;
     int x;
 
@@ -122,11 +122,11 @@ static void convert_RGB16_to_RGB24(uint8_t *line, int width, uint8_t **out_line)
    }
 }
 
-static void convert_BGR24_to_RGB24(uint8_t *line, int width, uint8_t **out_line)
+static void convert_BGR24_to_RGB24(void *in_line, int width, uint8_t **out_line)
 {
     int x;
     uint8_t *out_pix;
-
+    uint8_t *line = in_line;
     spice_assert(out_line && *out_line);
 
     out_pix = *out_line;
@@ -139,9 +139,9 @@ static void convert_BGR24_to_RGB24(uint8_t *line, int width, uint8_t **out_line)
     }
 }
 
-static void convert_BGRX32_to_RGB24(uint8_t *line, int width, uint8_t **out_line)
+static void convert_BGRX32_to_RGB24(void *line, int width, uint8_t **out_line)
 {
-    uint32_t *src_line = (uint32_t *)line;
+    uint32_t *src_line = line;
     uint8_t *out_pix;
     int x;
 
@@ -157,7 +157,7 @@ static void convert_BGRX32_to_RGB24(uint8_t *line, int width, uint8_t **out_line
     }
 }
 
-static void convert_RGB24_to_RGB24(uint8_t *line, int width, uint8_t **out_line)
+static void convert_RGB24_to_RGB24(void *line, int width, uint8_t **out_line)
 {
     *out_line = line;
 }
-- 
2.4.3



More information about the Spice-devel mailing list