Changeset 2013


Ignore:
Timestamp:
Oct 12, 2012, 7:00:44 PM (5 years ago)
Author:
sam
Message:

image: better error detection in the GDI+ image codec.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/image/codec/gdiplus-image.cpp

    r1513 r2013  
    5151bool GdiPlusImageData::Open(char const *path)
    5252{
     53    Gdiplus::Status status;
     54    ULONG_PTR token;
     55    Gdiplus::GdiplusStartupInput input;
     56    status = Gdiplus::GdiplusStartup(&token, &input, NULL);
     57    if (status != Gdiplus::Ok)
     58    {
     59#if !LOL_RELEASE
     60        Log::Error("error %d while initialising GDI+\n", status);
     61#endif
     62        return false;
     63    }
     64
    5365    size_t len;
    5466    len = mbstowcs(NULL, path, 0);
     
    6375    }
    6476
    65     ULONG_PTR token;
    66     Gdiplus::GdiplusStartupInput input;
    67     Gdiplus::GdiplusStartup(&token, &input, NULL);
    68 
     77    bitmap = NULL;
     78    status = Gdiplus::Ok;
    6979    for (wchar_t const *wname = wpath; *wname; wname++)
    70         if ((bitmap = Gdiplus::Bitmap::FromFile(wname, 0)))
    71             break;
     80    {
     81        bitmap = Gdiplus::Bitmap::FromFile(wname, 0);
     82        if (bitmap)
     83        {
     84            status = bitmap->GetLastStatus();
     85            if (status == Gdiplus::Ok)
     86                break;
     87#if !LOL_RELEASE
     88            if (status != Gdiplus::InvalidParameter)
     89                Log::Error("error %d loading %s\n", status, path);
     90#endif
     91            delete bitmap;
     92        }
     93    }
    7294
    7395    delete[] wpath;
     
    7799        Log::Error("could not load %s\n", path);
    78100#endif
    79         return false;
    80     }
    81 
    82     if (bitmap->GetLastStatus() != Gdiplus::Ok)
    83     {
    84 #if !LOL_RELEASE
    85         Log::Error("error %d loading %s\n",
    86                    (unsigned)bitmap->GetLastStatus(), path);
    87 #endif
    88         delete bitmap;
    89101        return false;
    90102    }
Note: See TracChangeset for help on using the changeset viewer.