diff --git a/libEXEIO/src/exeio_src.cpp b/libEXEIO/src/exeio_src.cpp
index fb59192a94afc3277db34d14e79b633cb8d54eea..b5b068684ce155e5ecd1b1c5e5517591e8340e4d 100644
--- a/libEXEIO/src/exeio_src.cpp
+++ b/libEXEIO/src/exeio_src.cpp
@@ -19,15 +19,19 @@ void exeio::load(char* filename)
 	if(!instream)
 		assert(0 && "Cannot open file");
 
+	int c0=instream.get();
+	int c1=instream.get();
+	int c2=instream.get();
+	int c3=instream.get();
 
 	// check for elf magic number
-	if( instream.get()=='E' && instream.get()=='L' && instream.get()=='F' )
+	if(c0 == '\177' && c1=='E' && c2=='L' && c3=='F')
 	{
-		backend=new exeio_elf_backend_t();
+		backend=new exeio_elf_backend_t;
 	}
 	// we assume it's ELF or PE.
 	else
-		backend=new exeio_pe_backend_t();
+		backend=new exeio_pe_backend_t;
 
 	backend->load(this, filename);