Hi,

I've attached a patch that might suit - however I am a bit unsure about
modifying a non-leaf package, such as GSL.

Most of the references to delete were of the form xxx_delete, which are
not relevant to the current problem (as this does not conflict with the
C++ operator).  The only externally visible (in header files) clash that
I could find was in the gsl_movstat.h file. This is referenced in a few
files in movstat/ internally, and needed to be adjusted.

This fixes the problem for me, and can be used as a patch in the debian
gsl git, c3eee7ef (as a file in debian/patches/). I've rebuilt the .deb
on a VM, and made a few quick tests using g++.

Thanks!
--- a/movstat/apply.c
+++ b/movstat/apply.c
@@ -91,7 +91,7 @@
           for (i = 0; i < H; ++i)
             (accum->insert)(x1, w->state);
         }
-      else if (accum->delete == NULL) /* FIXME XXX */
+      else if (accum->del== NULL) /* FIXME XXX */
         {
           /* save last K - 1 samples of x for later (needed for in-place 
input/output) */
           int idx1 = GSL_MAX(n - J - H, 0);
@@ -125,7 +125,7 @@
           int idx1 = GSL_MAX(n - J, 0);
           int idx2 = n - 1;
 
-          if (accum->delete == NULL)
+          if (accum->del== NULL)
             {
               int wsize = n - GSL_MAX(n - J - H, 0); /* size of work array */
 
@@ -154,7 +154,7 @@
                   if (i - H > 0)
                     {
                       /* delete oldest window sample as we move closer to edge 
*/
-                      (accum->delete)(w->state);
+                      (accum->del)(w->state);
                     }
 
                   /* yi = acc_get [ work(i:K-2) ] */
--- a/movstat/gsl_movstat.h
+++ b/movstat/gsl_movstat.h
@@ -55,7 +55,7 @@
   size_t (*size) (const size_t n);
   int (*init) (const size_t n, void * vstate);
   int (*insert) (const double x, void * vstate);
-  int (*delete) (void * vstate);
+  int (*del) (void * vstate);
   int (*get) (void * params, double * result, const void * vstate);
 } gsl_movstat_accum;
 
--- a/filter/rmedian.c
+++ b/filter/rmedian.c
@@ -188,7 +188,7 @@
 rmedian_delete(void * vstate)
 {
   rmedian_state_t * state = (rmedian_state_t *) vstate;
-  return (state->minmax_acc->delete)(state->minmax_state);
+  return (state->minmax_acc->del)(state->minmax_state);
 }
 
 static int

Reply via email to