OSDN Git Service

libcamera_metadata: assert correct state on exit
authorAlex Ray <aray@google.com>
Wed, 13 Nov 2013 02:09:31 +0000 (18:09 -0800)
committerAlex Ray <aray@google.com>
Thu, 14 Nov 2013 19:38:32 +0000 (11:38 -0800)
Change-Id: I2d9138f61665baa6695ac086184246334038236d

camera/src/Android.mk
camera/src/camera_metadata.c

index 47e8050..522f86d 100644 (file)
@@ -20,5 +20,9 @@ LOCAL_CFLAGS += \
        -fvisibility=hidden \
        -std=c99
 
+ifneq ($(filter userdebug eng,$(TARGET_BUILD_VARIANT)),)
+    # Enable assert()
+    LOCAL_CFLAGS += -UNDEBUG -DLOG_NDEBUG=1
+endif
 
 include $(BUILD_SHARED_LIBRARY)
index 980d4f5..4e34ac6 100644 (file)
@@ -18,6 +18,7 @@
 
 #define LOG_TAG "camera_metadata"
 #include <cutils/log.h>
+#include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
@@ -221,6 +222,7 @@ camera_metadata_t *place_camera_metadata(void *dst,
     metadata->data_start = ALIGN_TO(data_unaligned, DATA_ALIGNMENT);
     metadata->user = NULL;
 
+    assert(validate_camera_metadata_structure(metadata, NULL) == OK);
     return metadata;
 }
 void free_camera_metadata(camera_metadata_t *metadata) {
@@ -288,6 +290,7 @@ camera_metadata_t* copy_camera_metadata(void *dst, size_t dst_size,
             sizeof(uint8_t[metadata->data_count]));
     metadata->user = NULL;
 
+    assert(validate_camera_metadata_structure(metadata, NULL) == OK);
     return metadata;
 }
 
@@ -473,6 +476,7 @@ int append_camera_metadata(camera_metadata_t *dst,
     dst->entry_count += src->entry_count;
     dst->data_count += src->data_count;
 
+    assert(validate_camera_metadata_structure(dst, NULL) == OK);
     return OK;
 }
 
@@ -489,6 +493,7 @@ camera_metadata_t *clone_camera_metadata(const camera_metadata_t *src) {
             clone = NULL;
         }
     }
+    assert(validate_camera_metadata_structure(clone, NULL) == OK);
     return clone;
 }
 
@@ -533,6 +538,7 @@ static int add_camera_metadata_entry_raw(camera_metadata_t *dst,
     }
     dst->entry_count++;
     dst->flags &= ~FLAG_SORTED;
+    assert(validate_camera_metadata_structure(dst, NULL) == OK);
     return OK;
 }
 
@@ -571,6 +577,7 @@ int sort_camera_metadata(camera_metadata_t *dst) {
             compare_entry_tags);
     dst->flags |= FLAG_SORTED;
 
+    assert(validate_camera_metadata_structure(dst, NULL) == OK);
     return OK;
 }
 
@@ -678,6 +685,7 @@ int delete_camera_metadata_entry(camera_metadata_t *dst,
             (dst->entry_count - index - 1) );
     dst->entry_count -= 1;
 
+    assert(validate_camera_metadata_structure(dst, NULL) == OK);
     return OK;
 }
 
@@ -753,6 +761,7 @@ int update_camera_metadata_entry(camera_metadata_t *dst,
                 updated_entry);
     }
 
+    assert(validate_camera_metadata_structure(dst, NULL) == OK);
     return OK;
 }