Преглед изворни кода

writeExecutePacket: fix capacity check

Julien Schmidt пре 12 година
родитељ
комит
656614d3b2
1 измењених фајлова са 2 додато и 2 уклоњено
  1. 2 2
      packets.go

+ 2 - 2
packets.go

@@ -877,7 +877,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
 			switch v := args[i].(type) {
 			case int64:
 				paramTypes[i+i] = fieldTypeLongLong
-				if cap(paramValues) <= len(paramValues)+8 {
+				if cap(paramValues)-len(paramValues)-8 >= 0 {
 					paramValues = paramValues[:len(paramValues)+8]
 					binary.LittleEndian.PutUint64(paramValues, uint64(v))
 				} else {
@@ -888,7 +888,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
 
 			case float64:
 				paramTypes[i+i] = fieldTypeDouble
-				if cap(paramValues) <= len(paramValues)+8 {
+				if cap(paramValues)-len(paramValues)-8 >= 0 {
 					paramValues = paramValues[:len(paramValues)+8]
 					binary.LittleEndian.PutUint64(paramValues, math.Float64bits(v))
 				} else {