diff --git a/inc/lektor/uri.h b/inc/lektor/uri.h
index b9ab50874ab07d438ef3a30bc666c337a9f41348..c24f82ef38b92034bdc84f80e7bcb340fef0cba8 100644
--- a/inc/lektor/uri.h
+++ b/inc/lektor/uri.h
@@ -17,7 +17,11 @@ enum lkt_uri_type {
 
 struct lkt_uri {
     enum lkt_uri_type type;
-    void *value;
+    union {
+        void *value;
+        size_t id;
+    };
+
 
     bool _allocated;
 };
diff --git a/src/commands.c b/src/commands.c
index 824fe657dff3d081df12f623371bfcc2d5e25a22..5a84e9a1d617199ac4415e7aa74641eb20742faf 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -268,13 +268,11 @@ command_addid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_
 {
     UNUSED(win);
     RETURN_UNLESS(args, "Invalid argument", false);
-    long id;
     char *endptr = NULL, err = 0;
     struct lkt_uri uri = { .type = uri_id };
     *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
-    STRTOL(id, args[0], endptr, err);
+    STRTOL(uri.id, args[0], endptr, err);
     RETURN_IF(err, "STRTOL failed", false);
-    uri.value = (void *) (size_t) id;
     return database_queue_add_uri(db, &uri, 1);
 }
 
@@ -283,13 +281,11 @@ command_multiaddid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MES
 {
     UNUSED(win);
     RETURN_UNLESS(args, "Invalid argument", false);
-    long id;
     char *endptr = NULL, err = 0;
     struct lkt_uri uri = { .type = uri_id };
     *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
-    STRTOL(id, args[0], endptr, err);
+    STRTOL(uri.id, args[0], endptr, err);
     RETURN_IF(err, "STRTOL failed", false);
-    uri.value = &id;
     return database_queue_add_uri(db, &uri, 1);
     /*
     UNUSED(win);
diff --git a/src/database/queue.c b/src/database/queue.c
index 7d476cfa4e00c066ee3cddd8685c5f050f18e6a3..ca0455241fea5f7b09870fa79e31b47b835b378d 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -266,7 +266,7 @@ database_queue_add_uri(volatile sqlite3 *db, struct lkt_uri *uri, int priority)
         return queue_add_with_col_like_str(db, LKT_DATABASE_KARA_ALL,
                                            uri->value, priority);
     case uri_id:
-        return database_queue_add_id(db, *(size_t *) uri->value, priority);
+        return database_queue_add_id(db, uri->id, priority);
     case uri_type:
         return queue_add_with_col_like_str(db, LKT_DATABASE_NAME_KTYPE,
                                            uri->value, priority);