From: Michael Mauger <mmaug@yahoo.com>
Subject: Windows XBM patch
Date: Thu, 6 Nov 2003 09:05:23 -0800 (PST) [thread overview]
Message-ID: <20031106170523.43662.qmail@web60305.mail.yahoo.com> (raw)
I've been encountering intermittent Access Violations using a current CVS
snapshot of Emacs on Windows. The most common failure situation was when
customizing a face. I eventually tracked down the problem to the use of
signed char's being passed to the isXXXXX() family of functions. In
`xbm_scan' data is passed via a `char**'. The first byte of the one of
the bitmaps was 0xc0 (192) which was treated via signed arithmetic as
-64. This value was passed to isspace() which, in MSVCRTL, is used as an
index to an array of character flags. Depending on what was mapped 64
bytes prior to the array, I would get an Access Violation.
The following patch modifies the handling of XBM data in w32fncs.c so
that it uses unsigned arithmetic throughout.
-- Michael
***********************************************************************/
static Lisp_Object x_find_image_file P_ ((Lisp_Object));
-static char *slurp_file P_ ((char *, int *));
+static unsigned char *slurp_file P_ ((char *, int *));
/* Find image file FILE. Look in data-directory, then
@@ -8278,13 +8278,13 @@
with xmalloc holding FILE's contents. Value is null if an error
occurred. *SIZE is set to the size of the file. */
-static char *
+static unsigned char *
slurp_file (file, size)
char *file;
int *size;
{
FILE *fp = NULL;
- char *buf = NULL;
+ unsigned char *buf = NULL;
struct stat st;
if (stat (file, &st) == 0
@@ -8315,12 +8315,14 @@
XBM images
***********************************************************************/
-static int xbm_scan P_ ((char **, char *, char *, int *));
+static int xbm_scan P_ ((unsigned char **, unsigned char *,
+ char *, int *));
static int xbm_load P_ ((struct frame *f, struct image *img));
static int xbm_load_image P_ ((struct frame *f, struct image *img,
- char *, char *));
+ unsigned char *, unsigned char *));
static int xbm_image_p P_ ((Lisp_Object object));
-static int xbm_read_bitmap_data P_ ((char *, char *, int *, int *,
+static int xbm_read_bitmap_data P_ ((unsigned char *, unsigned char *,
+ int *, int *,
unsigned char **));
static int xbm_file_p P_ ((Lisp_Object));
@@ -8510,11 +8512,11 @@
static int
xbm_scan (s, end, sval, ival)
- char **s, *end;
+ unsigned char **s, *end;
char *sval;
int *ival;
{
- int c;
+ unsigned int c;
loop:
@@ -8644,11 +8646,11 @@
static int
xbm_read_bitmap_data (contents, end, width, height, data)
- char *contents, *end;
+ unsigned char *contents, *end;
int *width, *height;
unsigned char **data;
{
- char *s = contents;
+ unsigned char *s = contents;
char buffer[BUFSIZ];
int padding_p = 0;
int v10 = 0;
@@ -8826,7 +8828,7 @@
xbm_load_image (f, img, contents, end)
struct frame *f;
struct image *img;
- char *contents, *end;
+ unsigned char *contents, *end;
{
int rc;
unsigned char *data;
@@ -8914,7 +8916,7 @@
if (STRINGP (file_name))
{
Lisp_Object file;
- char *contents;
+ unsigned char *contents;
int size;
struct gcpro gcpro1;
__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree
reply other threads:[~2003-11-06 17:05 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20031106170523.43662.qmail@web60305.mail.yahoo.com \
--to=mmaug@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).