Browse Source

Use prepared statements for generating the savepoint name.

This removes the FIXME, and feels leaner.
Etienne Samson 12 years ago
parent
commit
4ba4c52f26
1 changed files with 3 additions and 5 deletions
  1. 3 5
      src/FMDatabase.m

+ 3 - 5
src/FMDatabase.m

@@ -1067,11 +1067,9 @@ - (BOOL)inTransaction {
 
 - (BOOL)startSavePointWithName:(NSString*)name error:(NSError**)outErr {
     
-    // FIXME: make sure the savepoint name doesn't have a ' in it.
-    
     NSParameterAssert(name);
     
-    if (![self executeUpdate:[NSString stringWithFormat:@"savepoint '%@';", name]]) {
+    if (![self executeUpdate:@"savepoint '?';", name]) {
 
         if (outErr) {
             *outErr = [self lastError];
@@ -1087,7 +1085,7 @@ - (BOOL)releaseSavePointWithName:(NSString*)name error:(NSError**)outErr {
     
     NSParameterAssert(name);
     
-    BOOL worked = [self executeUpdate:[NSString stringWithFormat:@"release savepoint '%@';", name]];
+    BOOL worked = [self executeUpdate:@"release savepoint '?';", name];
     
     if (!worked && outErr) {
         *outErr = [self lastError];
@@ -1100,7 +1098,7 @@ - (BOOL)rollbackToSavePointWithName:(NSString*)name error:(NSError**)outErr {
     
     NSParameterAssert(name);
     
-    BOOL worked = [self executeUpdate:[NSString stringWithFormat:@"rollback transaction to savepoint '%@';", name]];
+    BOOL worked = [self executeUpdate:@"rollback transaction to savepoint '?';", name];
     
     if (!worked && outErr) {
         *outErr = [self lastError];