@@ -87,21 +87,27 @@ func ParseSafetensorsHeader(path string) (*Header, error) {
8787 // Parse shape
8888 var shape []int64
8989 if shapeArray , ok := tensorMap ["shape" ].([]interface {}); ok {
90- for _ , v := range shapeArray {
91- if floatVal , ok := v .(float64 ); ok {
92- shape = append (shape , int64 (floatVal ))
90+ for index , v := range shapeArray {
91+ floatVal , ok := v .(float64 )
92+ if ! ok {
93+ return nil , fmt .Errorf ("invalid shape value for tensor %q at index %d: expected number, got %T" , name , index , v )
9394 }
95+ shape = append (shape , int64 (floatVal ))
9496 }
9597 }
9698
9799 // Parse data_offsets
98100 var dataOffsets [2 ]int64
99- if offsetsArray , ok := tensorMap ["data_offsets" ].([]interface {}); ok && len ( offsetsArray ) == 2 {
100- if start , ok := offsetsArray [ 0 ].( float64 ); ok {
101- dataOffsets [ 0 ] = int64 ( start )
101+ if offsetsArray , ok := tensorMap ["data_offsets" ].([]interface {}); ok {
102+ if len ( offsetsArray ) != 2 {
103+ return nil , fmt . Errorf ( "invalid data_offsets for tensor %q: expected 2 elements, got %d" , name , len ( offsetsArray ) )
102104 }
103- if end , ok := offsetsArray [1 ].(float64 ); ok {
104- dataOffsets [1 ] = int64 (end )
105+ for index , offset := range offsetsArray {
106+ floatVal , ok := offset .(float64 )
107+ if ! ok {
108+ return nil , fmt .Errorf ("invalid data_offsets value for tensor %q at index %d: expected number, got %T" , name , index , offset )
109+ }
110+ dataOffsets [index ] = int64 (floatVal )
105111 }
106112 }
107113
0 commit comments