@@ -734,6 +734,8 @@ type bindArg struct {
734
734
v driver.Value
735
735
}
736
736
737
+ var placeHolder byte = 0
738
+
737
739
func (s * SQLiteStmt ) bind (args []namedValue ) error {
738
740
rv := C .sqlite3_reset (s .s )
739
741
if rv != C .SQLITE_ROW && rv != C .SQLITE_OK && rv != C .SQLITE_DONE {
@@ -755,8 +757,7 @@ func (s *SQLiteStmt) bind(args []namedValue) error {
755
757
rv = C .sqlite3_bind_null (s .s , n )
756
758
case string :
757
759
if len (v ) == 0 {
758
- b := []byte {0 }
759
- rv = C ._sqlite3_bind_text (s .s , n , (* C .char )(unsafe .Pointer (& b [0 ])), C .int (0 ))
760
+ rv = C ._sqlite3_bind_text (s .s , n , (* C .char )(unsafe .Pointer (& placeHolder )), C .int (0 ))
760
761
} else {
761
762
b := []byte (v )
762
763
rv = C ._sqlite3_bind_text (s .s , n , (* C .char )(unsafe .Pointer (& b [0 ])), C .int (len (b )))
@@ -772,11 +773,13 @@ func (s *SQLiteStmt) bind(args []namedValue) error {
772
773
case float64 :
773
774
rv = C .sqlite3_bind_double (s .s , n , C .double (v ))
774
775
case []byte :
776
+ var ptr * byte
775
777
if len (v ) == 0 {
776
- rv = C . _sqlite3_bind_blob ( s . s , n , nil , 0 )
778
+ ptr = & placeHolder
777
779
} else {
778
- rv = C . _sqlite3_bind_blob ( s . s , n , unsafe . Pointer ( & v [0 ]), C . int ( len ( v )))
780
+ ptr = & v [0 ]
779
781
}
782
+ rv = C ._sqlite3_bind_blob (s .s , n , unsafe .Pointer (ptr ), C .int (len (v )))
780
783
case time.Time :
781
784
b := []byte (v .Format (SQLiteTimestampFormats [0 ]))
782
785
rv = C ._sqlite3_bind_text (s .s , n , (* C .char )(unsafe .Pointer (& b [0 ])), C .int (len (b )))
0 commit comments