File tree Expand file tree Collapse file tree 3 files changed +16
-0
lines changed Expand file tree Collapse file tree 3 files changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -461,4 +461,11 @@ delete from t;
461
461
insert into t values (0x31313131);
462
462
delete from t;
463
463
drop table t;
464
+ #
465
+ # MDEV-37055 UBSAN: 32801 is outside the range of representable values of type 'short'
466
+ #
467
+ create table t1 (v vector (1) not null,vector index (v));
468
+ insert into t1 values (0xf0a08080);
469
+ insert into t1 values (0xfa000000);
470
+ drop table t1;
464
471
# End of 11.8 tests
Original file line number Diff line number Diff line change @@ -339,5 +339,12 @@ delete from t;
339
339
insert into t values (0x31313131);
340
340
delete from t;
341
341
drop table t;
342
+ --echo #
343
+ --echo # MDEV-37055 UBSAN: 32801 is outside the range of representable values of type 'short'
344
+ --echo #
345
+ create table t1 (v vector (1) not null,vector index (v));
346
+ insert into t1 values (0xf0a08080);
347
+ insert into t1 values (0xfa000000);
348
+ drop table t1;
342
349
343
350
--echo # End of 11.8 tests
Original file line number Diff line number Diff line change @@ -100,6 +100,8 @@ struct FVector
100
100
101
101
FVector *vec= align_ptr (mem);
102
102
vec->scale = scale ? scale/32767 : 1 ;
103
+ if (std::round (scale/vec->scale ) > 32767 )
104
+ vec->scale = std::nextafter (vec->scale , scale > 0 ? FLT_MAX : -FLT_MAX);
103
105
for (size_t i= 0 ; i < vec_len; i++)
104
106
vec->dims [i] = static_cast <int16_t >(std::round (get_float (v + i) / vec->scale ));
105
107
vec->postprocess (vec_len);
You can’t perform that action at this time.
0 commit comments