APPROVE COMMIT 21.4
Thanks for the patch, Stephen.
It has been committed to the 21.4 branch and will appear
in the 21.4.21 release.
- Vin
On 5/20/07, Stephen J. Turnbull <stephen(a)xemacs.org> wrote:
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(a)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(a)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
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org