Index: libmpcdec/trunk/src/streaminfo.c
===================================================================
--- libmpcdec/trunk/src/streaminfo.c	(revision 118)
+++ libmpcdec/trunk/src/streaminfo.c	(revision 153)
@@ -216,30 +216,33 @@
     si->total_file_length = r->get_size(r->data);
     si->tag_offset = si->total_file_length;
-    if (memcmp(HeaderData, "MP+", 3) == 0) {
+    
+    if (memcmp(HeaderData, "MP+", 3)) return ERROR_CODE_INVALIDSV;
 #ifndef MPC_LITTLE_ENDIAN
+    {
         mpc_uint32_t ptr;
         for (ptr = 0; ptr < 8; ptr++) {
             HeaderData[ptr] = mpc_swap32(HeaderData[ptr]);
         }
+    }
 #endif
-        si->stream_version = HeaderData[0] >> 24;
-
-        // stream version 8
-        if ((si->stream_version & 15) >= 8) {
-            return ERROR_CODE_INVALIDSV;
-        }
-        // stream version 7
-        else if ((si->stream_version & 15) == 7) {
-            Error = streaminfo_read_header_sv7(si, HeaderData);
-            if (Error != ERROR_CODE_OK) return Error;
-        }
-    } else {
+    
+    si->stream_version = HeaderData[0] >> 24;
+
+    // stream version 8
+    if ((si->stream_version & 15) >= 8) {
+        return ERROR_CODE_INVALIDSV;
+    }
+    // stream version 7
+    else if ((si->stream_version & 15) == 7) {
+        Error = streaminfo_read_header_sv7(si, HeaderData);
+        if (Error != ERROR_CODE_OK) return Error;
+    }
 #ifdef MPC_SUPPORT_SV456
+    else {
         // stream version 4-6
         Error = streaminfo_read_header_sv6(si, HeaderData);
-#else
-        return ERROR_CODE_INVALIDSV;
+        if (Error != ERROR_CODE_OK) return Error;
+    }
 #endif
-    }
 
     // estimation, exact value needs too much time
