Use XCALLOC / XZALLOC macros where reasonable
[pspp] / src / math / wilcoxon-sig.c
index d9a4bcae43d0020474cedb02ad60985f218ff5a4..a9d9b70dbc9b94c5241365a2cf5580f5b78fd435 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2009 Free Software Foundation, Inc.
+   Copyright (C) 2009, 2021 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    only 250,047.
 */
 static unsigned long int
-count_sums_to_W (unsigned long int n, unsigned long int w)
+count_sums_to_W (unsigned long int n, long int w)
 {
   /* The array contain ints even though everything else is long,
      but no element in the array can have a value bigger than N,
      and using int will save some memory on 64-bit systems. */
   unsigned long int total;
   unsigned long int max;
-  int *array;
 
+  assert (w >= 0);
   assert (n < CHAR_BIT * sizeof (unsigned long int));
   if (n == 0)
     return 0;
-  else if (w <= 0)
+  else if (w == 0)
     return 1 << n;
   else if (w > n * (n + 1) / 2)
     return 0;
   else if (n == 1)
     return 1;
 
-  array = xcalloc (sizeof *array, w + 1);
+  int *array = XCALLOC (w + 1, int);
   array[w] = 1;
 
   max = w;