diff --git a/dlls/ntdll/time.c b/dlls/ntdll/time.c
index 941ab8f..68a7e52 100644
--- a/dlls/ntdll/time.c
+++ b/dlls/ntdll/time.c
@@ -888,7 +888,7 @@
         if (!NtQueryValueKey( hkey, &nameW, KeyValuePartialInformation, KpInfo,\
                     sizeof(buf), &size )) { \
             if( size >= (sizeof((tofield)) + \
-                    offsetof(KEY_VALUE_PARTIAL_INFORMATION,Data))); { \
+                    offsetof(KEY_VALUE_PARTIAL_INFORMATION,Data))) { \
                 memcpy(&(tofield), \
                         KpInfo->Data, sizeof(tofield)); \
             } \
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index 8b26f59..d470de7 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -3687,16 +3687,25 @@
         if(pBstrName)
         {
             if (This->Name)
-                if(!(*pBstrName = SysAllocString(This->Name))) goto memerr1;else;
+            {
+                if(!(*pBstrName = SysAllocString(This->Name)))
+                    goto memerr1;
+            }
             else
                 *pBstrName = NULL;
         }
         if(pBstrDocString)
         {
             if (This->DocString)
-                if(!(*pBstrDocString = SysAllocString(This->DocString))) goto memerr2;else;
+            {
+                if(!(*pBstrDocString = SysAllocString(This->DocString)))
+                    goto memerr2;
+            }
             else if (This->Name)
-                if(!(*pBstrDocString = SysAllocString(This->Name))) goto memerr2;else;
+            {
+                if(!(*pBstrDocString = SysAllocString(This->Name)))
+                    goto memerr2;
+            }
             else
                 *pBstrDocString = NULL;
         }
@@ -3707,7 +3716,10 @@
         if(pBstrHelpFile)
         {
             if (This->HelpFile)
-                if(!(*pBstrHelpFile = SysAllocString(This->HelpFile))) goto memerr3;else;
+            {
+                if(!(*pBstrHelpFile = SysAllocString(This->HelpFile)))
+                    goto memerr3;
+            }
             else
                 *pBstrHelpFile = NULL;
         }
diff --git a/dlls/user/text.c b/dlls/user/text.c
index be4f0cc..c05d008 100644
--- a/dlls/user/text.c
+++ b/dlls/user/text.c
@@ -472,9 +472,10 @@
         assert (max >= n);
         max -= n;
         while (n--)
+        {
             if (*start_str++ == PREFIX && max--)
                 start_str++;
-            else;
+        }
         start_count -= (start_str - str_on_entry);
     }
     else
@@ -532,7 +533,6 @@
             str++;
             ns--;
         }
-        else;
         i++;
     }
     return result;
