Browse Source

Avoid undefined void* arithmetic

Samuel Thibault 8 years ago
parent
commit
91cdd8d90e
2 changed files with 6 additions and 4 deletions
  1. 2 1
      src/drivers/scc/driver_scc_common.c
  2. 4 3
      src/drivers/scc/driver_scc_sink.c

+ 2 - 1
src/drivers/scc/driver_scc_common.c

@@ -16,6 +16,7 @@
 
 #include <sys/mman.h>
 #include <fcntl.h>
+#include <stdint.h>
 
 #include <core/workers.h>
 
@@ -119,7 +120,7 @@ void _starpu_scc_common_unmap_shared_memory()
 /* To know if the pointer "ptr" points into the shared memory map */
 int _starpu_scc_common_is_in_shared_memory(void *ptr)
 {
-	return (void*)shm_addr <= ptr && ptr < (void*)shm_addr + SHMSIZE;
+	return (void*)shm_addr <= ptr && ptr < (void*)((uintptr_t)shm_addr + SHMSIZE);
 }
 
 int _starpu_scc_common_is_mp_initialized()

+ 4 - 3
src/drivers/scc/driver_scc_sink.c

@@ -17,6 +17,7 @@
 
 #include <RCCE.h>
 #include <dlfcn.h>
+#include <stdint.h>
 
 #include <datawizard/interfaces/data_interface.h>
 #include <drivers/mp_common/sink_common.h>
@@ -97,10 +98,10 @@ void _starpu_scc_sink_execute(const struct _starpu_mp_node *node, void *arg, int
 	void *local_arg = arg;
 
 	/* point after the kernel */
-	local_arg += sizeof(void(*)(void**, void*));
+	local_arg = (void*) ((uintptr_t)local_arg + sizeof(void(*)(void**, void*)));
 
 	unsigned nb_interfaces = *(unsigned*)local_arg;
-	local_arg += sizeof(nb_interfaces);
+	local_arg += (void*) ((uintptr_t)local_arg + sizeof(nb_interfaces));
 
 	uintptr_t shm_addr = (uintptr_t)_starpu_scc_common_get_shared_memory_addr();
 
@@ -152,7 +153,7 @@ void _starpu_scc_sink_execute(const struct _starpu_mp_node *node, void *arg, int
 		}
 
 		/* point to the next interface */
-		local_arg += sizeof(union _starpu_interface);
+		local_arg = (void*)((uintptr_t)local_arg + sizeof(union _starpu_interface));
 	}
 
 	_starpu_sink_common_execute(node, arg, arg_size);