Diff
Not logged in

Differences From:

File src/content.c part of check-in [75c476ccd1] - Work on network synchronization by drh on 2007-07-23 20:33:04. [view]

To:

File src/content.c part of check-in [3a25b68390] - Only request the password one time on a push or pull. by drh on 2007-07-30 16:35:16. [view]

@@ -253,11 +253,13 @@
     Blob x;
     Stmt s;
     content_get(rid, &x);
     db_prepare(&s, "UPDATE blob SET content=:c WHERE rid=%d", rid);
+    blob_compress(&x, &x);
     db_bind_blob(&s, ":c", &x);
     db_exec(&s);
     db_finalize(&s);
+    blob_reset(&x);
     db_multi_exec("DELETE FROM delta WHERE rid=%d", rid);
   }
 }
 
@@ -285,9 +287,9 @@
 */
 void content_deltify(int rid, int srcid, int force){
   int s;
   Blob data, src, delta;
-  static Stmt s1, s2;
+  Stmt s1, s2;
   if( srcid==rid ) return;
   if( !force && findSrcid(rid, 0)>0 ) return;
   s = srcid;
   while( (s = findSrcid(s, 0))>0 ){
@@ -301,18 +303,17 @@
   blob_delta_create(&src, &data, &delta);
   if( blob_size(&src)>=50 && blob_size(&data)>=50 &&
            blob_size(&delta) < blob_size(&data)*0.75 ){
     blob_compress(&delta, &delta);
-    db_static_prepare(&s1, "UPDATE blob SET content=:data WHERE rid=:rid");
-    db_static_prepare(&s2, "REPLACE INTO delta(rid,srcid)VALUES(:rid,:sid)");
-    db_bind_int(&s1, ":rid", rid);
-    db_bind_blob(&s1, ":data", &delta);
-    db_bind_int(&s2, ":rid", rid);
-    db_bind_int(&s2, ":sid", srcid);
+    db_prepare(&s1, "UPDATE blob SET content=:data WHERE rid=%d", rid);
+    db_prepare(&s2, "REPLACE INTO delta(rid,srcid)VALUES(%d,%d)", rid, srcid);
+    db_bind_blob(&s1, ":data", &delta);
     db_begin_transaction();
     db_exec(&s1);
     db_exec(&s2);
     db_end_transaction(0);
+    db_finalize(&s1);
+    db_finalize(&s2);
   }
   blob_reset(&src);
   blob_reset(&data);
   blob_reset(&delta);