@@ -2657,7 +2657,7 @@ bool cmp_skip_object(cmp_ctx_t *ctx, cmp_object_t *obj) {
26572657}
26582658
26592659bool cmp_skip_object_limit (cmp_ctx_t * ctx , cmp_object_t * obj , uint32_t limit ) {
2660- uint64_t element_count = 1 ;
2660+ size_t element_count = 1 ;
26612661 uint32_t depth = 0 ;
26622662
26632663 while (element_count ) {
@@ -2702,6 +2702,20 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
27022702 }
27032703
27042704 if (size ) {
2705+ switch (cmp_type ) {
2706+ case CMP_TYPE_FIXEXT1 :
2707+ case CMP_TYPE_FIXEXT2 :
2708+ case CMP_TYPE_FIXEXT4 :
2709+ case CMP_TYPE_FIXEXT8 :
2710+ case CMP_TYPE_FIXEXT16 :
2711+ case CMP_TYPE_EXT8 :
2712+ case CMP_TYPE_EXT16 :
2713+ case CMP_TYPE_EXT32 :
2714+ size ++ ;
2715+ default :
2716+ break ;
2717+ }
2718+
27052719 skip_bytes (ctx , size );
27062720 }
27072721 }
@@ -2723,7 +2737,7 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
27232737 if (!read_type_size (ctx , type_marker , cmp_type , & size )) {
27242738 return false;
27252739 }
2726- element_count += ((uint64_t )size ) * 2 ;
2740+ element_count += ((size_t )size ) * 2 ;
27272741 break ;
27282742 default :
27292743 break ;
@@ -2734,7 +2748,7 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
27342748}
27352749
27362750bool cmp_skip_object_no_limit (cmp_ctx_t * ctx ) {
2737- uint64_t element_count = 1 ;
2751+ size_t element_count = 1 ;
27382752
27392753 while (element_count ) {
27402754 uint8_t type_marker = 0 ;
@@ -2763,8 +2777,23 @@ bool cmp_skip_object_no_limit(cmp_ctx_t *ctx) {
27632777 return false;
27642778 }
27652779
2766- if (size )
2780+ if (size ) {
2781+ switch (cmp_type ) {
2782+ case CMP_TYPE_FIXEXT1 :
2783+ case CMP_TYPE_FIXEXT2 :
2784+ case CMP_TYPE_FIXEXT4 :
2785+ case CMP_TYPE_FIXEXT8 :
2786+ case CMP_TYPE_FIXEXT16 :
2787+ case CMP_TYPE_EXT8 :
2788+ case CMP_TYPE_EXT16 :
2789+ case CMP_TYPE_EXT32 :
2790+ size ++ ;
2791+ default :
2792+ break ;
2793+ }
2794+
27672795 skip_bytes (ctx , size );
2796+ }
27682797 }
27692798
27702799 element_count -- ;
@@ -2784,7 +2813,7 @@ bool cmp_skip_object_no_limit(cmp_ctx_t *ctx) {
27842813 if (!read_type_size (ctx , type_marker , cmp_type , & size )) {
27852814 return false;
27862815 }
2787- element_count += ((uint64_t )size ) * 2 ;
2816+ element_count += ((size_t )size ) * 2 ;
27882817 break ;
27892818 default :
27902819 break ;
@@ -2996,6 +3025,9 @@ bool cmp_object_as_char(cmp_object_t *obj, int8_t *c) {
29963025 * c = obj -> as .s8 ;
29973026 return true;
29983027 }
3028+ else {
3029+ return false;
3030+ }
29993031 default :
30003032 return false;
30013033 }
@@ -3019,6 +3051,9 @@ bool cmp_object_as_short(cmp_object_t *obj, int16_t *s) {
30193051 * s = obj -> as .u16 ;
30203052 return true;
30213053 }
3054+ else {
3055+ return false;
3056+ }
30223057 default :
30233058 return false;
30243059 }
@@ -3048,6 +3083,9 @@ bool cmp_object_as_int(cmp_object_t *obj, int32_t *i) {
30483083 * i = obj -> as .u32 ;
30493084 return true;
30503085 }
3086+ else {
3087+ return false;
3088+ }
30513089 default :
30523090 return false;
30533091 }
@@ -3083,6 +3121,9 @@ bool cmp_object_as_long(cmp_object_t *obj, int64_t *d) {
30833121 * d = obj -> as .u64 ;
30843122 return true;
30853123 }
3124+ else {
3125+ return false;
3126+ }
30863127 default :
30873128 return false;
30883129 }
0 commit comments