summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2010-05-30 22:41:36 +0200
committerLudovic Courtès <ludo@gnu.org>2010-05-30 22:41:36 +0200
commit1880c97df10770eba8dbf1f068903e713dbf3f7e (patch)
tree657f3bd9b0b17c618fe22fc9550a396080772634
parentfd449a269050b50cb639f695508bf2859a30841b (diff)
downloadguile-1880c97df10770eba8dbf1f068903e713dbf3f7e.tar.gz
Fix parenthesizing of the `ROUND_UP' macro; factorize.
* libguile/_scm.h (ROUND_UP): New macro. * libguile/continuations.c (ROUND_UP): Remove. * libguile/control.c (ROUND_UP): Remove. * libguile/foreign.c (ROUND_UP): Remove.
-rw-r--r--libguile/_scm.h4
-rw-r--r--libguile/continuations.c1
-rw-r--r--libguile/control.c1
-rw-r--r--libguile/foreign.c3
4 files changed, 4 insertions, 5 deletions
diff --git a/libguile/_scm.h b/libguile/_scm.h
index 9cd6fadf0..bf655b3fe 100644
--- a/libguile/_scm.h
+++ b/libguile/_scm.h
@@ -118,6 +118,10 @@
#define max(A, B) ((A) >= (B) ? (A) : (B))
#endif
+/* Return the first integer greater than or equal to LEN such that
+ LEN % ALIGN == 0. Return LEN if ALIGN is zero. */
+#define ROUND_UP(len, align) \
+ ((align) ? (((len) - 1UL) | ((align) - 1UL)) + 1UL : (len))
#if GUILE_USE_64_CALLS && defined(HAVE_STAT64)
diff --git a/libguile/continuations.c b/libguile/continuations.c
index 69a87d229..dc504f0d1 100644
--- a/libguile/continuations.c
+++ b/libguile/continuations.c
@@ -71,7 +71,6 @@ static scm_t_bits tc16_continuation;
#define META_HEADER(meta) meta, 0, 0, 0, 0, 0, 0, 0
#endif
-#define ROUND_UP(len,align) (((len-1)|(align-1))+1)
#define ALIGN_PTR(type,p,align) (type*)(ROUND_UP (((scm_t_bits)p), align))
#ifdef SCM_ALIGNED
diff --git a/libguile/control.c b/libguile/control.c
index bb35fdf37..6c206756a 100644
--- a/libguile/control.c
+++ b/libguile/control.c
@@ -79,7 +79,6 @@ scm_i_prompt_pop_abort_args_x (SCM prompt)
#define META_HEADER(meta) meta, 0, 0, 0, 0, 0, 0, 0
#endif
-#define ROUND_UP(len,align) (((len-1)|(align-1))+1)
#define ALIGN_PTR(type,p,align) (type*)(ROUND_UP (((scm_t_bits)p), align))
#ifdef SCM_ALIGNED
diff --git a/libguile/foreign.c b/libguile/foreign.c
index a58634a97..8b3c9be7e 100644
--- a/libguile/foreign.c
+++ b/libguile/foreign.c
@@ -431,9 +431,6 @@ scm_i_foreign_print (SCM foreign, SCM port, scm_print_state *pstate)
-
-#define ROUND_UP(len,align) (align?(((len-1)|(align-1))+1):len)
-
SCM_DEFINE (scm_alignof, "alignof", 1, 0, 0, (SCM type),
"Return the alignment of @var{type}, in bytes.\n\n"
"@var{type} should be a valid C type, like @code{int}.\n"