summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/red_worker.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/server/red_worker.c b/server/red_worker.c
index 6bdad93e..35a1a04f 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -9470,7 +9470,11 @@ static inline void red_create_surface(RedWorker *worker, uint32_t surface_id, ui
surface->context.stride = stride;
surface->context.line_0 = line_0;
if (!data_is_valid) {
- memset((char *)line_0 + (int32_t)(stride * (height - 1)), 0, height*abs(stride));
+ char *data = line_0;
+ if (stride < 0) {
+ data -= abs(stride) * (height - 1);
+ }
+ memset(data, 0, height*abs(stride));
}
surface->create.info = NULL;
surface->destroy.info = NULL;