From 6886716763147795329695a9c4704e86c6b4f265 Mon Sep 17 00:00:00 2001
From: George Bosilca <bosilca@icl.utk.edu>
Date: Wed, 8 Jun 2005 20:47:48 +0000
Subject: [PATCH] Update the the new datatype engine.

This commit was SVN r5998.
---
 src/mca/ptl/sm/src/ptl_sm.c      |  3 ++-
 src/mca/ptl/sm/src/ptl_sm_send.c | 20 ++++----------------
 2 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/src/mca/ptl/sm/src/ptl_sm.c b/src/mca/ptl/sm/src/ptl_sm.c
index c5c592c3c9..856b774dea 100644
--- a/src/mca/ptl/sm/src/ptl_sm.c
+++ b/src/mca/ptl/sm/src/ptl_sm.c
@@ -823,6 +823,7 @@ int mca_ptl_sm_send(
     hdr->hdr_match.hdr_dst = sendreq->req_send.req_base.req_peer;
     hdr->hdr_match.hdr_tag = sendreq->req_send.req_base.req_tag;
     hdr->hdr_match.hdr_msg_length = sendreq->req_send.req_bytes_packed;
+    hdr->hdr_match.hdr_msg_seq    = sendreq->req_send.req_base.req_sequence;
 
     /* update the offset within the payload */
     sendreq->req_offset += size;
@@ -927,7 +928,7 @@ int mca_ptl_sm_send_continue(
 
     /* pack data in payload buffer */
     convertor = &sendreq->req_send.req_convertor;
-    ompi_convertor_prepare_for_send( convertor, 0, offset, NULL );
+    ompi_convertor_set_position( convertor, &offset );
     sm_data_ptr = send_frag->buff;
 
     /* set up the shared memory iovec */
diff --git a/src/mca/ptl/sm/src/ptl_sm_send.c b/src/mca/ptl/sm/src/ptl_sm_send.c
index 30b5d5437e..1c3e242457 100644
--- a/src/mca/ptl/sm/src/ptl_sm_send.c
+++ b/src/mca/ptl/sm/src/ptl_sm_send.c
@@ -71,7 +71,6 @@ void mca_ptl_sm_matched(
     mca_ptl_sm_frag_t *sm_frag_desc;
     struct iovec iov; 
     ompi_convertor_t frag_convertor;
-    ompi_proc_t *proc;
     int  free_after,my_local_smp_rank,peer_local_smp_rank, return_status;
     uint32_t iov_count;
     size_t max_data;
@@ -86,23 +85,13 @@ void mca_ptl_sm_matched(
     peer_local_smp_rank=sm_frag_desc->queue_index;
 
     /* copy, only if there is data to copy */
-    max_data=0;
+    max_data = 0;
     if( 0 <  sm_frag_desc->super.frag_base.frag_size ) {
- 
         /* 
          * Initialize convertor and use it to unpack data  
-         */ 
-        OBJ_CONSTRUCT(&frag_convertor, ompi_convertor_t);
-        proc = ompi_comm_peer_lookup(recv_desc->req_recv.req_base.req_comm,
-                    frag->frag_base.frag_header.hdr_match.hdr_src);
-        /* write over converter set on the send side */
-        ompi_convertor_copy_and_prepare_for_recv(
-                       proc->proc_convertor,
-                       recv_desc->req_recv.req_base.req_datatype,  /* datatype */
-                       recv_desc->req_recv.req_base.req_count,     /* count elements */
-                       recv_desc->req_recv.req_base.req_addr,      /* users buffer */
-                       &frag_convertor );
-        ompi_convertor_set_position( &frag_convertor, &(sm_frag_desc->send_offset) );
+         */
+        ompi_convertor_clone_with_position( &(recv_desc->req_recv.req_convertor), &frag_convertor,
+                                            1, &(sm_frag_desc->send_offset) );
         /* convert address from sender's address space to my virtual
          * address space */
 #ifdef SM_COMMON_BASE_ADDR
@@ -115,7 +104,6 @@ void mca_ptl_sm_matched(
         iov_count = 1;
         max_data = iov.iov_len;
         ompi_convertor_unpack( &frag_convertor, &iov, &iov_count, &max_data, &free_after ); 
-        OBJ_DESTRUCT(&frag_convertor);
     }
 
     /* update receive request information */