From 8ec8a5ec9e0f14936bf555aad26c54e033210250 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Mon, 11 Sep 2000 19:54:11 +0000 Subject: [PATCH] (png_load, jpeg_load): Declare some variables volatile that might be clobbered by longjmp. (check_x_display_info, x_decode_color, create_frame_xic) (Fx_display_backing_store, Fx_display_visual_class) (x_build_heuristic_mask, pbm_scan_number): Avoid compiler warnings. --- src/ChangeLog | 7 +++++ src/xfns.c | 87 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 63 insertions(+), 31 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 96eb512983a..324445f05a5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,12 @@ 2000-09-11 Gerd Moellmann + * xfns.c (png_load, jpeg_load): Declare some variables volatile + that might be clobbered by longjmp. + (check_x_display_info, x_decode_color, create_frame_xic) + (Fx_display_backing_store, Fx_display_visual_class) + (x_build_heuristic_mask, pbm_scan_number): Avoid compiler + warnings. + * lread.c (init_lread): Set Vloads_in_progress to nil. (Fload): Show list of recursively loaded files, when signaling an error. diff --git a/src/xfns.c b/src/xfns.c index ea7f3a06252..cd277a39e34 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -295,19 +295,21 @@ static struct x_display_info * check_x_display_info (frame) Lisp_Object frame; { + struct x_display_info *dpyinfo = NULL; + if (NILP (frame)) { struct frame *sf = XFRAME (selected_frame); if (FRAME_X_P (sf) && FRAME_LIVE_P (sf)) - return FRAME_X_DISPLAY_INFO (sf); + dpyinfo = FRAME_X_DISPLAY_INFO (sf); else if (x_display_list != 0) - return x_display_list; + dpyinfo = x_display_list; else error ("X windows are not in use or not initialized"); } else if (STRINGP (frame)) - return x_display_info_for_name (frame); + dpyinfo = x_display_info_for_name (frame); else { FRAME_PTR f; @@ -316,8 +318,10 @@ check_x_display_info (frame) f = XFRAME (frame); if (! FRAME_X_P (f)) error ("Non-X frame used"); - return FRAME_X_DISPLAY_INFO (f); + dpyinfo = FRAME_X_DISPLAY_INFO (f); } + + return dpyinfo; } @@ -1288,8 +1292,8 @@ x_decode_color (f, color_name, mono_color) if (x_defined_color (f, XSTRING (color_name)->data, &cdef, 1)) return cdef.pixel; - Fsignal (Qerror, Fcons (build_string ("undefined color"), - Fcons (color_name, Qnil))); + return Fsignal (Qerror, Fcons (build_string ("Undefined color"), + Fcons (color_name, Qnil))); } @@ -3264,7 +3268,7 @@ create_frame_xic (f) else { int len = strlen (ascii_font) + 1; - char *p1; + char *p1 = NULL; for (i = 0, p = ascii_font; i < 8; p++) { @@ -4581,21 +4585,28 @@ If omitted or nil, that stands for the selected frame's display.") Lisp_Object display; { struct x_display_info *dpyinfo = check_x_display_info (display); + Lisp_Object result; switch (DoesBackingStore (dpyinfo->screen)) { case Always: - return intern ("always"); + result = intern ("always"); + break; case WhenMapped: - return intern ("when-mapped"); + result = intern ("when-mapped"); + break; case NotUseful: - return intern ("not-useful"); + result = intern ("not-useful"); + break; default: error ("Strange value for BackingStore parameter of screen"); + result = Qnil; } + + return result; } DEFUN ("x-display-visual-class", Fx_display_visual_class, @@ -4610,18 +4621,34 @@ If omitted or nil, that stands for the selected frame's display.") Lisp_Object display; { struct x_display_info *dpyinfo = check_x_display_info (display); + Lisp_Object result; switch (dpyinfo->visual->class) { - case StaticGray: return (intern ("static-gray")); - case GrayScale: return (intern ("gray-scale")); - case StaticColor: return (intern ("static-color")); - case PseudoColor: return (intern ("pseudo-color")); - case TrueColor: return (intern ("true-color")); - case DirectColor: return (intern ("direct-color")); + case StaticGray: + result = intern ("static-gray"); + break; + case GrayScale: + result = intern ("gray-scale"); + break; + case StaticColor: + result = intern ("static-color"); + break; + case PseudoColor: + result = intern ("pseudo-color"); + break; + case TrueColor: + result = intern ("true-color"); + break; + case DirectColor: + result = intern ("direct-color"); + break; default: error ("Display has an unknown visual class"); + result = Qnil; } + + return result; } DEFUN ("x-display-save-under", Fx_display_save_under, @@ -7159,12 +7186,10 @@ x_laplace (f, img) for (x = 0; x < img->width - 2; ++x) { - int r = in[rowa][x].red + mv2 - in[rowb][x + 2].red; - int g = in[rowa][x].green + mv2 - in[rowb][x + 2].green; - int b = in[rowa][x].blue + mv2 - in[rowb][x + 2].blue; - - out[x + 1] = lookup_rgb_color (f, r & 0xffff, g & 0xffff, - b & 0xffff); + int r = 0xffff & (in[rowa][x].red + mv2 - in[rowb][x + 2].red); + int g = 0xffff & (in[rowa][x].green + mv2 - in[rowb][x + 2].green); + int b = 0xffff & (in[rowa][x].blue + mv2 - in[rowb][x + 2].blue); + out[x + 1] = lookup_rgb_color (f, r, g, b); } x_laplace_write_row (f, out, img->width, oimg, out_y++); @@ -7208,7 +7233,7 @@ x_build_heuristic_mask (f, img, how) Display *dpy = FRAME_X_DISPLAY (f); XImage *ximg, *mask_img; int x, y, rc, look_at_corners_p; - unsigned long bg; + unsigned long bg = 0; BLOCK_INPUT; @@ -7381,7 +7406,7 @@ static int pbm_scan_number (s, end) unsigned char **s, *end; { - int c, val = -1; + int c = 0, val = -1; while (*s < end) { @@ -7758,10 +7783,10 @@ png_load (f, img) struct gcpro gcpro1; png_struct *png_ptr = NULL; png_info *info_ptr = NULL, *end_info = NULL; - FILE *fp = NULL; + FILE *volatile fp = NULL; png_byte sig[8]; - png_byte *pixels = NULL; - png_byte **rows = NULL; + png_byte * volatile pixels = NULL; + png_byte ** volatile rows = NULL; png_uint_32 width, height; int bit_depth, color_type, interlace_type; png_byte channels; @@ -8299,7 +8324,7 @@ jpeg_load (f, img) struct my_jpeg_error_mgr mgr; Lisp_Object file, specified_file; Lisp_Object specified_data; - FILE *fp = NULL; + FILE * volatile fp = NULL; JSAMPARRAY buffer; int row_stride, x, y; XImage *ximg = NULL; @@ -8351,7 +8376,7 @@ jpeg_load (f, img) /* Close the input file and destroy the JPEG object. */ if (fp) - fclose (fp); + fclose ((FILE *) fp); jpeg_destroy_decompress (&cinfo); BLOCK_INPUT; @@ -8372,7 +8397,7 @@ jpeg_load (f, img) jpeg_create_decompress (&cinfo); if (NILP (specified_data)) - jpeg_stdio_src (&cinfo, fp); + jpeg_stdio_src (&cinfo, (FILE *) fp); else jpeg_memory_src (&cinfo, XSTRING (specified_data)->data, STRING_BYTES (XSTRING (specified_data))); @@ -8448,7 +8473,7 @@ jpeg_load (f, img) jpeg_finish_decompress (&cinfo); jpeg_destroy_decompress (&cinfo); if (fp) - fclose (fp); + fclose ((FILE *) fp); /* Put the image into the pixmap. */ x_put_x_image (f, ximg, img->pixmap, width, height); -- 2.39.5