MdePkg/BaseMemoryLib: Fix VS2015 build error
authorMichael Kinney <michael.d.kinney@intel.com>
Thu, 10 Nov 2016 02:31:38 +0000 (18:31 -0800)
committerMichael Kinney <michael.d.kinney@intel.com>
Thu, 17 Nov 2016 17:43:23 +0000 (09:43 -0800)
https://bugzilla.tianocore.org/show_bug.cgi?id=237

Make the smallest change possible to workaround a VS2015
build error.  The change is to the loop that handles the
case where neither the source nor the destination are
64-bit or 32-bit aligned and the logic falls through to
a loop that performs the copy as bytes.  Only the loop
that copies bytes backwards needs to be updated to avoid
the VS2015 build error.

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
MdePkg/Library/BaseMemoryLib/CopyMem.c

index 6f4fd90..3db25ca 100644 (file)
@@ -3,7 +3,7 @@
   out into its own source file so that it can be excluded from a build for a\r
   particular platform easily if an optimized version is desired.\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
   Copyright (c) 2012 - 2013, ARM Ltd. All rights reserved.<BR>\r
   Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>\r
 \r
@@ -143,10 +143,10 @@ InternalMemCopyMem (
         *(Destination8++) = *(Source8++);\r
       }\r
     } else if (SourceBuffer < DestinationBuffer) {\r
-      Destination8 = (UINT8*)DestinationBuffer + Length;\r
-      Source8 = (CONST UINT8*)SourceBuffer + Length;\r
+      Destination8 = (UINT8*)DestinationBuffer + (Length - 1);\r
+      Source8 = (CONST UINT8*)SourceBuffer + (Length - 1);\r
       while (Length-- != 0) {\r
-        *(--Destination8) = *(--Source8);\r
+        *(Destination8--) = *(Source8--);\r
       }\r
     }\r
   }\r