File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -358,15 +358,18 @@ impl<T: FromSql> FromSql for Vec<T> {
358358 _ => panic ! ( "expected array type" ) ,
359359 } ;
360360
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+ }
366365
367366 let _has_nulls = try!( raw. read_i32 :: < BigEndian > ( ) ) ;
368367 let _member_oid = try!( raw. read_u32 :: < BigEndian > ( ) ) ;
369368
369+ if dimensions == 0 {
370+ return Ok ( vec ! [ ] ) ;
371+ }
372+
370373 let count = try!( raw. read_i32 :: < BigEndian > ( ) ) ;
371374 let _index_offset = try!( raw. read_i32 :: < BigEndian > ( ) ) ;
372375
You can’t perform that action at this time.
0 commit comments