Cutthrough: fix race resulting in duplicate-delivery. Bug 2273
[exim.git] / src / exim_monitor / em_strip.c
index 9f1cdad7273e31387390bb2908cc95caa282e550..2a5f0b84e72969bab41d9dd0b4453e2c8034ac55 100644 (file)
@@ -1,10 +1,8 @@
-/* $Cambridge: exim/src/exim_monitor/em_strip.c,v 1.3 2006/02/07 11:18:59 ph10 Exp $ */
-
 /*************************************************
 *                   Exim Monitor                 *
 *************************************************/
 
-/* Copyright (c) University of Cambridge 1995 - 2006 */
+/* Copyright (c) University of Cambridge 1995 - 2009 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 
@@ -23,7 +21,7 @@ static int     size_first_time = 1;          /* and another */
 static int     stripchart_count = 0;         /* count stripcharts created */
 static int    *stripchart_delay;             /* vector of delay counts */
 static Widget *stripchart_label;             /* vector of label widgets */
-static int    *stripchart_last_total;        /* vector of prevous values */
+static int    *stripchart_last_total;        /* vector of previous values */
 static int    *stripchart_max;               /* vector of maxima */
 static int    *stripchart_middelay;          /* vector of */
 static int    *stripchart_midmax;            /* vector of */
@@ -60,12 +58,13 @@ a little game in order to ensure that the double value is correctly
 passed back via the value pointer without the compiler doing an
 unwanted cast. */
 
-static void stripchartAction(Widget w, XtPointer client_data, XtPointer value)
+static void
+stripchartAction(Widget w, XtPointer client_data, XtPointer value)
 {
-double *ptr = (double *)value;
+double * ptr = (double *)value;
 static int thresholds[] =
   {10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 0};
-int num = (int)client_data;
+int num = (long)client_data;
 int oldmax = 0;
 int newmax = 0;
 int newvalue = 0;
@@ -215,7 +214,8 @@ and for the second if it is a partition size display; its update time is
 initially set to 1 second so that it gives an immediate display of the queue.
 The first time its callback function is obeyed, the update time gets reset. */
 
-void create_stripchart(Widget parent, uschar *title)
+void
+create_stripchart(Widget parent, uschar *title)
 {
 Widget chart;
 
@@ -251,7 +251,7 @@ xs_SetValues(chart, 11,
   XtNfromVert,  label);
 
 XtAddCallback(chart, "getValue", stripchartAction,
-  (XtPointer)stripchart_count);
+  (XtPointer)(long)stripchart_count);
 
 stripchart_last_total[stripchart_count] = 0;
 stripchart_max[stripchart_count] = 10;