bug fix for UsefulBuf_CopyOffset; complete tests for UsefulBuf
diff --git a/src/UsefulBuf.c b/src/UsefulBuf.c
index b64c0b5..c8e5d28 100644
--- a/src/UsefulBuf.c
+++ b/src/UsefulBuf.c
@@ -100,13 +100,14 @@
  */
 UsefulBufC UsefulBuf_CopyOffset(UsefulBuf Dest, size_t uOffset, const UsefulBufC Src)
 {
-    if(Src.len > Dest.len - uOffset) {
-        return NULLUsefulBufC;
-    }
+   // Do this with subtraction so it doesn't give erroneous result if uOffset + Src.len overflows
+   if(uOffset > Dest.len || Src.len > Dest.len - uOffset) { // uOffset + Src.len > Dest.len
+      return NULLUsefulBufC;
+   }
     
-    memcpy(Dest.ptr + uOffset, Src.ptr, Src.len);
+   memcpy(Dest.ptr + uOffset, Src.ptr, Src.len);
     
-    return((UsefulBufC){Dest.ptr, Src.len});
+   return((UsefulBufC){Dest.ptr, Src.len + uOffset});
 }