[AC21.5R21.4]

Stephen J. Turnbull stephen at xemacs.org
Sun May 20 12:01:46 EDT 2007


APPROVE COMMIT 21.5 RECOMMEND 21.4

I decided to see if I could do something about the perennial progress
bar crash.  I'm unable to reproduce at the moment and haven't found a
report that localizes it very well, but based on one report that has a
backtrace with XFillRectangle crashing, I'm guessing that it has to do
with the function GaugeMercury (which won't appear in most backtraces
because it's static).

The attached patch fixes a genuine bug, which has some chance of being
related to the crash.  All of the callers of GaugeMercury pass it ints
in the val0 and val1 arguments, but they are declared Cardinal, which
is X-ese for "unsigned".  Having done a bunch of fontlocking with it,
as least I can say it doesn't cause a new crach for me.  However, I
can't say for sure it will help.

And as usual there's a gratuitous (but related) doc change.  I never
saw a docstring that didn't need fussing with. :-)

Index: lisp/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v
retrieving revision 1.795
diff -u -r1.795 ChangeLog
--- lisp/ChangeLog	12 May 2007 13:12:26 -0000	1.795
+++ lisp/ChangeLog	20 May 2007 14:32:02 -0000
@@ -0,0 +1,4 @@
+2007-05-20  Stephen J. Turnbull  <stephen at xemacs.org>
+
+	* gutter-items.el (progress-feedback-with-label): Clarify docstring.
+
Index: lwlib/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v
retrieving revision 1.91
diff -u -r1.91 ChangeLog
--- lwlib/ChangeLog	17 May 2007 15:06:04 -0000	1.91
+++ lwlib/ChangeLog	20 May 2007 14:32:02 -0000
@@ -0,0 +1,13 @@
+2007-05-20  Stephen J. Turnbull  <stephen at xemacs.org>
+
+	Gauge values are signed integers (ints).
+	(XawGaugeGetValue): Declare return value as int.
+	(XawGaugeSetValue): Declare value as int.
+	
+	* xlwgauge.h: Get rid of references to Cardinal in comment.
+
+	* xlwgauge.c (GaugeGetValue): Declare value as int.
+	(GaugeMercury): Declare val0 and val1 as int.  Remove redundant casts.
+	(XawGaugeGetValue): Declare return value as int.
+	(XawGaugeSetValue): Declare value as int.
+

Index: lisp/gutter-items.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/gutter-items.el,v
retrieving revision 1.8
diff -u -r1.8 gutter-items.el
--- lisp/gutter-items.el	18 Mar 2003 06:58:20 -0000	1.8
+++ lisp/gutter-items.el	20 May 2007 14:32:02 -0000
@@ -679,8 +679,10 @@
 
 (defun progress-feedback-with-label (label fmt &optional value &rest args)
   "Print a progress gauge and message in the bottom gutter area of the frame.
-First argument LABEL is an identifier for this progress gauge.  The rest of the
-arguments are the same as to `format'."
+LABEL is an identifier for this progress gauge.
+FMT is a format string to be passed to `format' along with ARGS.
+Optional VALUE is the current degree of progress, an integer 0-100.
+The remaining ARGS are passed with FMT `(apply #'format FMT ARGS)'."
   ;; #### sometimes the buffer gets changed temporarily. I don't know
   ;; why this is, so protect against it.
   (save-excursion
Index: lwlib/xlwgauge.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwgauge.c,v
retrieving revision 1.7
diff -u -r1.7 xlwgauge.c
--- lwlib/xlwgauge.c	2 May 2006 15:30:32 -0000	1.7
+++ lwlib/xlwgauge.c	20 May 2007 14:32:02 -0000
@@ -132,7 +132,7 @@
 static void DisableUpdate (GaugeWidget);
 
 static void GaugeGetValue (XtPointer, XtIntervalId *);
-static void GaugeMercury (Display *, Window, GC, GaugeWidget, Cardinal, Cardinal);
+static void GaugeMercury (Display *, Window, GC, GaugeWidget, int, int);
 
 static Boolean GaugeConvert (Widget, Atom *, Atom *, Atom *,
 			     XtPointer *, unsigned long *, int *);
@@ -817,8 +817,7 @@
 	 */
 
 void
-XawGaugeSetValue (Widget   w,
-		  Cardinal value)
+XawGaugeSetValue (Widget w, int value)
 {
 	GaugeWidget gw = (GaugeWidget)w ;
 	int	oldvalue ;
@@ -850,7 +849,7 @@
 }
 
 
-Cardinal
+int
 XawGaugeGetValue (Widget w)
 {
 	GaugeWidget gw = (GaugeWidget)w ;
@@ -873,8 +872,8 @@
 	      Window      win,
 	      GC          gc,
 	      GaugeWidget gw,
-	      Cardinal    val0,
-	      Cardinal    val1)
+	      int    val0,
+	      int    val1)
 {
 	int	v0 = gw->gauge.v0 ;
 	int	v1 = gw->gauge.v1 ;
@@ -893,10 +892,10 @@
 
 	if( vd <= 0 ) vd = 1 ;
 
-	if( (int) val0 < v0 ) val0 = v0 ;
-	else if( (int) val0 > v1 ) val0 = v1 ;
-	if( (int) val1 < v0 ) val1 = v0 ;
-	else if( (int) val1 > v1 ) val1 = v1 ;
+	if( val0 < v0 ) val0 = v0 ;
+	else if( val0 > v1 ) val0 = v1 ;
+	if( val1 < v0 ) val1 = v0 ;
+	else if( val1 > v1 ) val1 = v1 ;
 
 	p0 = (val0-v0)*(e1-e0-1)/vd ;
 	p1 = (val1-v0)*(e1-e0-1)/vd ;
@@ -1108,7 +1107,7 @@
 	       XtIntervalId *UNUSED (intervalId))
 {
 	GaugeWidget	gw = (GaugeWidget)clientData ;
-	Cardinal	value ;
+	int	value ;
 
 	if( gw->gauge.update > 0 )
 	  EnableUpdate(gw) ;
Index: lwlib/xlwgauge.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwgauge.h,v
retrieving revision 1.2
diff -u -r1.2 xlwgauge.h
--- lwlib/xlwgauge.h	12 Apr 2001 18:21:53 -0000	1.2
+++ lwlib/xlwgauge.h	20 May 2007 14:32:02 -0000
@@ -48,9 +48,9 @@
 
  Name			Class		RepType		Default Value
  ----			-----		-------		-------------
- value			Value		Cardinal	0
- minValue		MinValue	Cardinal	0
- maxValue		MaxValue	Cardinal	100
+ value			Value		Int	0
+ minValue		Int	Cardinal	0
+ maxValue		Int	Cardinal	100
  ntics			NTics		Cardinal	0	+
  nlabels		NLabels		Cardinal	0	++
  labels			Labels		String *	NULL	+++
@@ -100,7 +100,7 @@
 		XtPointer client ;
 		XtPointer rval ;
 	{
-	  *(Cardinal *)rval = value ;
+	  *(int *)rval = value ;
 	}
 
 */
@@ -169,11 +169,11 @@
 extern	void	XawGaugeSetValue(
 #if NeedFunctionPrototypes
 	Widget	gauge,
-	Cardinal value
+	int value
 #endif
 );
 
-extern	Cardinal XawGaugeGetValue(
+extern	int XawGaugeGetValue(
 #if NeedFunctionPrototypes
 	Widget	gauge
 #endif



More information about the XEmacs-Patches mailing list