Unicode fixes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10215 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2001-05-18 18:34:49 +00:00
parent 0d832cf788
commit ffe107c8c0
2 changed files with 14 additions and 9 deletions

View File

@@ -128,12 +128,16 @@ bool wxXPMHandler::SaveFile(wxImage * image,
chars_per_pixel++;
// 2. write the header:
tmp.Printf("/* XPM */\n"
char tmpbuf[200];
// VS: 200b is safe upper bound for anything produced by sprintf bellow
// (101 bytes the string, neither %i can expand into more than 10 chars)
sprintf(tmpbuf,
"/* XPM */\n"
"static char *xpm_data[] = {\n"
"/* columns rows colors chars-per-pixel */\n"
"\"%i %i %i %i\",\n",
image->GetWidth(), image->GetHeight(), cols, chars_per_pixel);
stream.Write(tmp.mb_str(), tmp.Length());
stream.Write(tmpbuf, strlen(tmpbuf));
// 3. create color symbols table:
wxHashTable table(wxKEY_INTEGER);

View File

@@ -641,8 +641,8 @@ wxImage wxXPMDecoder::ReadData(const char **xpm_data)
wxImage img;
int count;
unsigned width, height, colors_cnt, chars_per_pixel;
unsigned i, j;
char key[64];
size_t i, j, i_key;
wxChar key[64];
const char *clr_def;
bool hasMask;
wxXPMColourMapData *clr_data;
@@ -669,7 +669,7 @@ wxImage wxXPMDecoder::ReadData(const char **xpm_data)
if ( !img.Ok() ) return img;
img.SetMask(FALSE);
key[chars_per_pixel] = '\0';
key[chars_per_pixel] = wxT('\0');
hasMask = FALSE;
clr_tbl.DeleteContents(TRUE);
@@ -678,7 +678,8 @@ wxImage wxXPMDecoder::ReadData(const char **xpm_data)
*/
for (i = 0; i < colors_cnt; i++)
{
memcpy(key, xpm_data[1 + i], chars_per_pixel);
for (i_key = 0; i_key < chars_per_pixel; i_key++)
key[i_key] = (wxChar)xpm_data[1 + i][i_key];
clr_def = ParseColor(xpm_data[1 + i]);
clr_data = new wxXPMColourMapData;
@@ -725,9 +726,9 @@ wxImage wxXPMDecoder::ReadData(const char **xpm_data)
{
for (i = 0; i < width; i++, img_data += 3)
{
memcpy(key,
xpm_data[1 + colors_cnt + j] + chars_per_pixel * i,
chars_per_pixel);
for (i_key = 0; i_key < chars_per_pixel; i_key++)
key[i_key] = (wxChar)xpm_data[1 + colors_cnt + j]
[chars_per_pixel * i + i_key];
clr_data = (wxXPMColourMapData*) clr_tbl.Get(key);
if ( clr_data == NULL )
{