diff --git a/libCacheSim/cache/prefetch/Mithril.c b/libCacheSim/cache/prefetch/Mithril.c index ff1a4726..6f237854 100644 --- a/libCacheSim/cache/prefetch/Mithril.c +++ b/libCacheSim/cache/prefetch/Mithril.c @@ -340,7 +340,7 @@ void Mithril_prefetch(cache_t *cache, const request_t *req) { (Mithril_params->pf_list_size + 1); request_t *new_req = my_malloc(request_t); - memcpy(new_req, req, sizeof(request_t)); + copy_request(new_req, req); if (prefetch_table_index) { int i; @@ -497,7 +497,7 @@ static inline bool _Mithril_check_sequential(cache_t *cache, if (Mithril_params->sequential_K == 0) return FALSE; request_t *new_req = my_malloc(request_t); - memcpy(new_req, req, sizeof(request_t)); + copy_request(new_req, req); bool is_sequential = TRUE; gint sequential_K = Mithril_params->sequential_K; if (sequential_K == -1) { /* when use AMP, this is -1 */ diff --git a/libCacheSim/cache/prefetch/PG.c b/libCacheSim/cache/prefetch/PG.c index 0eea9f5b..db16c0e2 100644 --- a/libCacheSim/cache/prefetch/PG.c +++ b/libCacheSim/cache/prefetch/PG.c @@ -162,7 +162,7 @@ void PG_prefetch(cache_t *cache, const request_t *req) { if (prefetch_list) { GList *node = prefetch_list; request_t *new_req = my_malloc(request_t); - memcpy(new_req, req, sizeof(request_t)); + copy_request(new_req, req); while (node) { new_req->obj_id = GPOINTER_TO_INT(node->data); new_req->obj_size = diff --git a/libCacheSim/include/libCacheSim/request.h b/libCacheSim/include/libCacheSim/request.h index a32c4337..23cc7298 100644 --- a/libCacheSim/include/libCacheSim/request.h +++ b/libCacheSim/include/libCacheSim/request.h @@ -87,7 +87,7 @@ static inline request_t *new_request(void) { * @param req_dest * @param req_src */ -static inline void copy_request(request_t *req_dest, request_t *req_src) { +static inline void copy_request(request_t *req_dest, const request_t *req_src) { memcpy(req_dest, req_src, sizeof(request_t)); } @@ -96,7 +96,7 @@ static inline void copy_request(request_t *req_dest, request_t *req_src) { * @param req * @return */ -static inline request_t *clone_request(request_t *req) { +static inline request_t *clone_request(const request_t *req) { request_t *req_new = my_malloc(request_t); copy_request(req_new, req); return req_new;