murphy-db: fix issues detected by coverity v0.0.68
authorJanos Kovacs <jankovac503@gmail.com>
Fri, 21 Nov 2014 16:15:57 +0000 (18:15 +0200)
committerKrisztian Litkey <krisztian.litkey@intel.com>
Fri, 12 Dec 2014 16:26:22 +0000 (18:26 +0200)
src/murphy-db/mdb/index.c
src/murphy-db/mdb/row.c
src/murphy-db/mdb/table.c

index 77ec8f4..6940378 100644 (file)
@@ -247,6 +247,7 @@ int mdb_index_insert(mdb_table_t   *tbl,
             if (mdb_row_delete(tbl, old, 0,0) < 0 ||
                 mdb_log_change(tbl, txdepth, mdb_log_update,cmask,old,row) < 0)
             {
+                /* errno is either EEXIST or ENOMEM set by mdb_hash_add */
                 return -1;
             }
 
@@ -256,6 +257,7 @@ int mdb_index_insert(mdb_table_t   *tbl,
     }
     else { /* duplicate insertion is an error. keep the original row */
         mdb_row_delete(tbl, row, 0, 1);
+        /* errno is either EEXIST or ENOMEM set by mdb_hash_add */
         return -1;
     }
 
index f6eba1b..6d5e0a2 100644 (file)
@@ -124,13 +124,18 @@ int mdb_row_update(mdb_table_t       *tbl,
         mdb_index_delete(tbl, row);
 
     cmod = 0;
-    for (cmask = i = 0;  (cidx = (source_dsc = cds + i)->cindex) >= 0;  i++){
+    for (cmask = i = 0;  (cidx = (source_dsc = cds + i)->cindex) >= 0;  i++) {
         cmask |= (((mqi_bitfld_t)1) << cidx);
         cmod |= mdb_column_write(columns + cidx, row->data, source_dsc, data);
     }
 
-    if (index_update)
-        mdb_index_insert(tbl, row, cmask, 0);
+    if (index_update) {
+        if (mdb_index_insert(tbl, row, cmask, 0) < 0) {
+            if (cmask_ret)
+                *cmask_ret = 0;
+            return -1;
+        }
+    }
 
     if (cmask_ret)
         *cmask_ret = cmask;
index 21ef74c..427c70b 100644 (file)
@@ -820,7 +820,9 @@ static int delete_single_row(mdb_table_t *tbl, mdb_row_t *row,int index_update)
     uint32_t txdepth = mdb_transaction_get_depth();
 
     mdb_row_delete(tbl, row, index_update, !txdepth);
-    mdb_log_change(tbl, txdepth, mdb_log_delete, 0, row, NULL);
+
+    if (txdepth)
+        mdb_log_change(tbl, txdepth, mdb_log_delete, 0, row, NULL);
 
     return 0;
 }