Hello,
I'd like to contribute this small patch (attached) that I think will
help prevent some future bugs from occurring in paste.c.
By wrapping the macro's arguments in parentheses, we can ensure that the
correct order of evaluation will take place during preprocessing.
To illustrate, we can use the == operator which has lower evaluation
precedence than the < operator:
* With the current macro, imax2(3==4, 1) expands to 0.
* After applying this patch, imax2(3==4, 1) expands to 1 as expected.
Since I'm still relatively new to the mailing list, I've kept this patch
small.
I did notice other macros that have this same issue, so I can start
sending additional patches if this seems okay.
Thanks,
Sahil
Index: src/main/paste.c
===================================================================
--- src/main/paste.c (revision 72713)
+++ src/main/paste.c (working copy)
@@ -31,7 +31,7 @@
#include "Defn.h"
#include <Internal.h>
-#define imax2(x, y) ((x < y) ? y : x)
+#define imax2(x, y) (((x) < (y)) ? (y) : (x))
#include "Print.h"
#include "RBufferUtils.h"
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel