I see a bug in this code fragment:

+#define MEMMOVE(d, s, l)                                  \
+    do {                                                  \
+        if( (((d) < (s)) && (((d) + (l)) > (s))) ||       \
+            (((s) < (d)) && (((s) + (l)) > (s))) ) {      \
+            memmove( (d), (s), (l) );                     \
+        } else {                                          \
+            MEMCPY( (d), (s), (l) );                      \
+        }                                                 \
+    } while (0)

Shouldn't this line
+            (((s) < (d)) && (((s) + (l)) > (s))) ) {      \

be like this instead?
+            (((s) < (d)) && (((s) + (l)) > (d))) ) {      \

On Fri, Nov 12, 2010 at 6:22 PM,  <bosi...@osl.iu.edu> wrote:
> Author: bosilca
> Date: 2010-11-12 18:22:35 EST (Fri, 12 Nov 2010)
> New Revision: 24047
> URL: https://svn.open-mpi.org/trac/ompi/changeset/24047
>
> Log:
> Add a second version of the datatype copy function using memmove instead of 
> memcpy.
> As memmove is slower than memcpy, I added the required logic to only use it 
> when
> really necessary.
>
> No modification from developers point of view, you should always call
> opal_datatype_copy_content_same_ddt.
>
>
> Added:
>   trunk/opal/datatype/opal_datatype_copy.h
> Text files modified:
>   trunk/opal/datatype/Makefile.am            |     3
>   trunk/opal/datatype/opal_datatype_copy.c   |   253 
> +++++++--------------------------------
>   trunk/opal/datatype/opal_datatype_memcpy.h |    28 ----
>   3 files changed, 48 insertions(+), 236 deletions(-)
>
> Modified: trunk/opal/datatype/Makefile.am
[snip]

-- 
Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
 timat...@open-mpi.org || tmat...@gmail.com
    I'm a bright... http://www.the-brights.net/

Reply via email to