libopkg: fix pkg_set_ptr() to properly set NULL pointers
[oweals/opkg-lede.git] / libopkg / pkg.h
index eeb75e6f2641316e2e65db7972a179d8935e622f..d9cab552826b3d3f2328f91cffab0d3bca676f6e 100644 (file)
@@ -60,6 +60,7 @@ enum pkg_state_flag {
        SF_MARKED = 64,         /* temporary mark */
        SF_FILELIST_CHANGED = 128,      /* needs filelist written */
        SF_USER = 256,
+       SF_NEED_DETAIL = 512,
        SF_LAST_STATE_FLAG
 };
 typedef enum pkg_state_flag pkg_state_flag_t;
@@ -144,7 +145,7 @@ struct pkg {
        pkg_src_t *src;
        pkg_dest_t *dest;
        pkg_state_want_t state_want:3;
-       pkg_state_flag_t state_flag:10;
+       pkg_state_flag_t state_flag:11;
        pkg_state_status_t state_status:4;
 
        abstract_pkg_t *parent;
@@ -197,7 +198,8 @@ static inline char *pkg_get_string(const pkg_t *pkg, int id)
 
 static inline void * pkg_set_ptr(pkg_t *pkg, int id, void *ptr)
 {
-       return ptr ? *(void **) pkg_set_raw(pkg, id, &ptr, sizeof(ptr)) : NULL;
+       void **res = pkg_set_raw(pkg, id, &ptr, sizeof(ptr));
+       return res ? *res : NULL;
 }
 
 static inline void * pkg_get_ptr(const pkg_t *pkg, int id)