msi: Return ERROR_FUNCTION_FAILED if a matching row is not found.
diff --git a/dlls/msi/table.c b/dlls/msi/table.c
index 692f4a5..a817098 100644
--- a/dlls/msi/table.c
+++ b/dlls/msi/table.c
@@ -1560,7 +1560,7 @@
     if (r != ERROR_SUCCESS)
     {
         ERR("can't find row to modify\n");
-        return ERROR_SUCCESS;
+        return ERROR_FUNCTION_FAILED;
     }
 
     /* the row cannot be changed */
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c
index 8887954..76d1617 100644
--- a/dlls/msi/tests/db.c
+++ b/dlls/msi/tests/db.c
@@ -841,10 +841,7 @@
     ok(r == ERROR_SUCCESS, "MsiRecordSetInteger failed\n");
 
     r = MsiViewModify(hview, MSIMODIFY_UPDATE, hrec);
-    todo_wine
-    {
-        ok(r == ERROR_FUNCTION_FAILED, "MsiViewModify failed\n");
-    }
+    ok(r == ERROR_FUNCTION_FAILED, "MsiViewModify failed\n");
 
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
@@ -892,10 +889,7 @@
     ok(r == ERROR_SUCCESS, "failed to set string\n");
 
     r = MsiViewModify(hview, MSIMODIFY_UPDATE, hrec);
-    todo_wine
-    {
-        ok(r == ERROR_FUNCTION_FAILED, "Expected ERROR_FUNCTION_FAILED, got %d\n", r);
-    }
+    ok(r == ERROR_FUNCTION_FAILED, "Expected ERROR_FUNCTION_FAILED, got %d\n", r);
 
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");