On 6/18/19 8:03 PM, Frediano Ziglio wrote:
On 6/3/19 2:22 PM, Frediano Ziglio wrote:
The formula is here to make sure glyph is aligned to 4 bytes so
tell to the compiler to avoid a warning.
What's the warning ?
Trying to reproduce but the updated environment it's slow like
hell (it's more than 30 minutes that it's compiling 3 files).
The warning is
red-parse-qxl.c: In function ‘red_get_string’:
red-parse-qxl.c:949:17: error: cast increases required alignment of target type [-Werror=cast-align]
glyph = (SpiceRasterGlyph*)
^
Is it that the pointer may be unaligned (which is imposible
if you start from an aligned address) ?
Yes, was an alignment warning
Looks complicated to me, especially since after the
SPICE_ALIGNED_CAST there is another (the "real") cast.
Maybe with an additional
@@ -941,7 +941,7 @@ static SpiceString *red_get_string(RedMemSlotInfo *slots,
int group_id,
spice_assert(glyph_size <= (char*) end - (char*) &start->data[0]);
memcpy(glyph->data, start->data, glyph_size);
start = (QXLRasterGlyph*)(&start->data[glyph_size]);
- glyph = (SpiceRasterGlyph*) SPICE_ALIGNED_CAST(uint32_t*,
+ glyph = SPICE_ALIGNED_CAST(SpiceRasterGlyph*,
(((uint8_t *)glyph) +
SPICE_ALIGN(sizeof(SpiceRasterGlyph) + glyph_size, 4)));
}
would work too. Not sure how long it's going to take to test it.
This works too.
That's better, thanks.
Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
Ack.
Uri.
---
server/red-parse-qxl.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
index afae94316..89b61c06f 100644
--- a/server/red-parse-qxl.c
+++ b/server/red-parse-qxl.c
@@ -941,9 +941,9 @@ static SpiceString *red_get_string(RedMemSlotInfo
*slots, int group_id,
spice_assert(glyph_size <= (char*) end - (char*)
&start->data[0]);
memcpy(glyph->data, start->data, glyph_size);
start = (QXLRasterGlyph*)(&start->data[glyph_size]);
- glyph = (SpiceRasterGlyph*)
+ glyph = (SpiceRasterGlyph*) SPICE_ALIGNED_CAST(uint32_t*,
(((uint8_t *)glyph) +
- SPICE_ALIGN(sizeof(SpiceRasterGlyph) + glyph_size, 4));
+ SPICE_ALIGN(sizeof(SpiceRasterGlyph) + glyph_size, 4)));
}
if (free_data) {
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel