? cvs_get_vanilla.sh
Index: modules/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node.module,v
retrieving revision 1.485.2.14
diff -u -p -r1.485.2.14 node.module
--- modules/node.module	9 Sep 2005 06:14:24 -0000	1.485.2.14
+++ modules/node.module	23 Feb 2006 19:14:54 -0000
@@ -420,11 +420,25 @@ function node_save($node) {
     $node->nid = db_next_id('{node}_nid');
 
     // Prepare the query:
+    $k = $v = $s = array();
     foreach ($node as $key => $value) {
       if (in_array((string) $key, $fields)) {
-        $k[] = db_escape_string($key);
-        $v[] = $value;
-        $s[] = "'%s'";
+        switch ($key) {
+          case 'nid':     case 'uid':     case 'status':  case 'created':
+          case 'changed': case 'comment': case 'promote': case 'moderate':
+          case 'sticky':  case 'format':
+            // Numeric values
+            $k[] = $key;
+            $v[] = $value;
+            $s[] = '%d';
+            break;
+          default:
+            // String values
+            $k[] = $key;
+            $v[] = $value;
+            $s[] = "'%s'";
+            break;
+        }
       }
     }
 
@@ -442,15 +456,29 @@ function node_save($node) {
     $node->changed = time();
 
     // Prepare the query:
+    $k = $v = array();
     foreach ($node as $key => $value) {
-      if (in_array($key, $fields)) {
-        $q[] = db_escape_string($key) ." = '%s'";
-        $v[] = $value;
+      if (in_array((string) $key, $fields)) {
+        switch ($key) {
+          case 'nid':     case 'uid':     case 'status':  case 'created':
+          case 'changed': case 'comment': case 'promote': case 'moderate':
+          case 'sticky':  case 'format':
+            // Numeric values
+            $k[] = "$key = %d";
+            $v[] = $value;
+            break;
+          default:
+            // String values
+            $k[] = "$key = '%s'";
+            $v[] = $value;
+            break;
+        }
       }
     }
 
     // Update the node in the database:
-    db_query("UPDATE {node} SET ". implode(', ', $q) ." WHERE nid = '$node->nid'", $v);
+    $v[] = $node->nid;
+    db_query("UPDATE {node} SET ". implode(', ', $k) ." WHERE nid = %d", $v);
 
     // Call the node specific callback (if any):
     node_invoke($node, 'update');
