Fixed profile cache flushing when no filename is specified (reported
by Mike Hearn).

diff --git a/dlls/kernel/profile.c b/dlls/kernel/profile.c
index 6266387..6e85de3 100644
--- a/dlls/kernel/profile.c
+++ b/dlls/kernel/profile.c
@@ -1421,22 +1421,22 @@
 
     RtlEnterCriticalSection( &PROFILE_CritSect );
 
-    if (PROFILE_Open( filename ))
+    if (!section && !entry && !string) /* documented "file flush" case */
     {
-        if (!section && !entry && !string) /* documented "file flush" case */
+        if (!filename || PROFILE_Open( filename ))
         {
-            PROFILE_FlushFile();
-            PROFILE_ReleaseFile();  /* always return FALSE in this case */
+            if (CurProfile) PROFILE_ReleaseFile();  /* always return FALSE in this case */
         }
-	else {
-	    if (!section) {
-		FIXME("(NULL?,%s,%s,%s)?\n",
-                      debugstr_w(entry), debugstr_w(string), debugstr_w(filename));
-	    } else {
-		ret = PROFILE_SetString( section, entry, string, FALSE);
-		PROFILE_FlushFile();
-	    }
-	}
+    }
+    else if (PROFILE_Open( filename ))
+    {
+        if (!section) {
+            FIXME("(NULL?,%s,%s,%s)?\n",
+                  debugstr_w(entry), debugstr_w(string), debugstr_w(filename));
+        } else {
+            ret = PROFILE_SetString( section, entry, string, FALSE);
+            PROFILE_FlushFile();
+        }
     }
 
     RtlLeaveCriticalSection( &PROFILE_CritSect );
@@ -1481,10 +1481,15 @@
 
     RtlEnterCriticalSection( &PROFILE_CritSect );
 
-    if (PROFILE_Open( filename )) {
-        if (!section && !string)
-            PROFILE_ReleaseFile();  /* always return FALSE in this case */
-        else if (!string) {/* delete the named section*/
+    if (!section && !string)
+    {
+        if (!filename || PROFILE_Open( filename ))
+        {
+            if (CurProfile) PROFILE_ReleaseFile();  /* always return FALSE in this case */
+        }
+    }
+    else if (PROFILE_Open( filename )) {
+        if (!string) {/* delete the named section*/
 	    ret = PROFILE_SetString(section,NULL,NULL, FALSE);
 	    PROFILE_FlushFile();
         } else {