@@ -2657,7 +2657,7 @@ bool cmp_skip_object(cmp_ctx_t *ctx, cmp_object_t *obj) {
2657
2657
}
2658
2658
2659
2659
bool 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 ;
2661
2661
uint32_t depth = 0 ;
2662
2662
2663
2663
while (element_count ) {
@@ -2702,6 +2702,20 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
2702
2702
}
2703
2703
2704
2704
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
+
2705
2719
skip_bytes (ctx , size );
2706
2720
}
2707
2721
}
@@ -2723,7 +2737,7 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
2723
2737
if (!read_type_size (ctx , type_marker , cmp_type , & size )) {
2724
2738
return false;
2725
2739
}
2726
- element_count += ((uint64_t )size ) * 2 ;
2740
+ element_count += ((size_t )size ) * 2 ;
2727
2741
break ;
2728
2742
default :
2729
2743
break ;
@@ -2734,7 +2748,7 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
2734
2748
}
2735
2749
2736
2750
bool cmp_skip_object_no_limit (cmp_ctx_t * ctx ) {
2737
- uint64_t element_count = 1 ;
2751
+ size_t element_count = 1 ;
2738
2752
2739
2753
while (element_count ) {
2740
2754
uint8_t type_marker = 0 ;
@@ -2763,8 +2777,23 @@ bool cmp_skip_object_no_limit(cmp_ctx_t *ctx) {
2763
2777
return false;
2764
2778
}
2765
2779
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
+
2767
2795
skip_bytes (ctx , size );
2796
+ }
2768
2797
}
2769
2798
2770
2799
element_count -- ;
@@ -2784,7 +2813,7 @@ bool cmp_skip_object_no_limit(cmp_ctx_t *ctx) {
2784
2813
if (!read_type_size (ctx , type_marker , cmp_type , & size )) {
2785
2814
return false;
2786
2815
}
2787
- element_count += ((uint64_t )size ) * 2 ;
2816
+ element_count += ((size_t )size ) * 2 ;
2788
2817
break ;
2789
2818
default :
2790
2819
break ;
@@ -2996,6 +3025,9 @@ bool cmp_object_as_char(cmp_object_t *obj, int8_t *c) {
2996
3025
* c = obj -> as .s8 ;
2997
3026
return true;
2998
3027
}
3028
+ else {
3029
+ return false;
3030
+ }
2999
3031
default :
3000
3032
return false;
3001
3033
}
@@ -3019,6 +3051,9 @@ bool cmp_object_as_short(cmp_object_t *obj, int16_t *s) {
3019
3051
* s = obj -> as .u16 ;
3020
3052
return true;
3021
3053
}
3054
+ else {
3055
+ return false;
3056
+ }
3022
3057
default :
3023
3058
return false;
3024
3059
}
@@ -3048,6 +3083,9 @@ bool cmp_object_as_int(cmp_object_t *obj, int32_t *i) {
3048
3083
* i = obj -> as .u32 ;
3049
3084
return true;
3050
3085
}
3086
+ else {
3087
+ return false;
3088
+ }
3051
3089
default :
3052
3090
return false;
3053
3091
}
@@ -3083,6 +3121,9 @@ bool cmp_object_as_long(cmp_object_t *obj, int64_t *d) {
3083
3121
* d = obj -> as .u64 ;
3084
3122
return true;
3085
3123
}
3124
+ else {
3125
+ return false;
3126
+ }
3086
3127
default :
3087
3128
return false;
3088
3129
}
0 commit comments