]> granicus.if.org Git - taglib/commitdiff
Fix reading read-only files in Win32
authorTsuda Kageyu <tsuda.kageyu@gmail.com>
Tue, 20 Nov 2012 13:20:34 +0000 (22:20 +0900)
committerTsuda Kageyu <tsuda.kageyu@gmail.com>
Tue, 20 Nov 2012 13:20:34 +0000 (22:20 +0900)
taglib/toolkit/tfilestream.cpp

index 16efb579795de96af4374eae29d4f03ec9c31314..d68dbc82c9ca50769368453c9edbb314542a69ab 100644 (file)
@@ -52,6 +52,8 @@ namespace {
 
   // Using native file handles instead of file descriptors for reducing the resource consumption.
 
+  const HANDLE InvalidFile = INVALID_HANDLE_VALUE;
+
   HANDLE openFile(const FileName &path, bool readOnly)
   {
     DWORD access = readOnly ? GENERIC_READ : (GENERIC_READ | GENERIC_WRITE);
@@ -82,6 +84,8 @@ namespace {
 
   // For non-Windows 
 
+  const FILE *InvalidFile = 0;
+
   struct FileNameHandle : public std::string
   {
     FileNameHandle(FileName name) : std::string(name) {}
@@ -119,7 +123,7 @@ public:
 };
 
 FileStream::FileStreamPrivate::FileStreamPrivate(FileName fileName, bool openReadOnly) :
-  file(0),
+  file(InvalidFile),
   name(fileName),
   readOnly(true),
   size(0)
@@ -129,12 +133,12 @@ FileStream::FileStreamPrivate::FileStreamPrivate(FileName fileName, bool openRea
   if(!openReadOnly)
     file = openFile(name, false);
 
-  if(file)
+  if(file != InvalidFile)
     readOnly = false;
   else
     file = openFile(name, true);
 
-  if(!file) {
+  if(file == InvalidFile) {
     debug("Could not open file " + String((const char *) name));
   }
 }