File tree Expand file tree Collapse file tree 1 file changed +8
-5
lines changed Expand file tree Collapse file tree 1 file changed +8
-5
lines changed Original file line number Diff line number Diff line change @@ -358,15 +358,18 @@ impl<T: FromSql> FromSql for Vec<T> {
358
358
_ => panic ! ( "expected array type" ) ,
359
359
} ;
360
360
361
- match try!( raw. read_i32 :: < BigEndian > ( ) ) {
362
- 0 => return Ok ( Vec :: new ( ) ) ,
363
- 1 => ( ) ,
364
- _ => return Err ( Error :: Conversion ( "array contains too many dimensions" . into ( ) ) ) ,
365
- } ;
361
+ let dimensions = try!( raw. read_i32 :: < BigEndian > ( ) ) ;
362
+ if dimensions > 1 {
363
+ return Err ( Error :: Conversion ( "array contains too many dimensions" . into ( ) ) ) ;
364
+ }
366
365
367
366
let _has_nulls = try!( raw. read_i32 :: < BigEndian > ( ) ) ;
368
367
let _member_oid = try!( raw. read_u32 :: < BigEndian > ( ) ) ;
369
368
369
+ if dimensions == 0 {
370
+ return Ok ( vec ! [ ] ) ;
371
+ }
372
+
370
373
let count = try!( raw. read_i32 :: < BigEndian > ( ) ) ;
371
374
let _index_offset = try!( raw. read_i32 :: < BigEndian > ( ) ) ;
372
375
You can’t perform that action at this time.
0 commit comments