I think I may have found a potential problem in ParseColor. I cannot
currently check the mods in -- I'm in the middle of doing a ton of other
things. However, try replacing the function in Theme.cpp with this function:

Error Theme::ParseColor(string &oColorstring, Color &oColor)
    int iRet;
    int iRed, iGreen, iBlue;

    iRet = sscanf(oColorstring.c_str(), "#%02X%02X%02X",
                  &iRed, &iGreen, &iBlue);

    if (iRet == 3)
        oColor.red = iRed;
        oColor.green = iGreen;
        oColor.blue = iBlue;
        return kError_NoErr;

    return kError_InvalidParam;

I think that passing 3 unsigned chars to sscanf when parsing a %X may not be
valid and result in two bytes on the heap getting trashed. This rev of the
function passes three int and then manually converts them over after the
scanf. I'll check this code in later on in any case, just to be sure.

Let me know if this helps.

--ruaok         Freezerburn! All else is only icing. -- Soul Coughing

Robert Kaye -- [EMAIL PROTECTED]  http://moon.eorbit.net/~robert

Reply via email to