Makefile - Added axwin3 to main build
[tpg/acess2.git] / Kernel / lib.c
index 472351c..73b6432 100644 (file)
@@ -854,10 +854,14 @@ int CheckString(const char *String)
 
 /**
  * \brief Check if a sized memory region is valid memory
+ * \return Boolean success
  */
 int CheckMem(const void *Mem, int NumBytes)
 {
        tVAddr  addr = (tVAddr)Mem;
+
+       if( !MM_GetPhysAddr( addr ) )
+               return 0;
        
        if( MM_IsUser( addr ) )
        {
@@ -956,12 +960,19 @@ void *memmove(void *__dest, const void *__src, size_t len)
        char    *dest = __dest;
        const char      *src = __src;
        void    *ret = __dest;
+
+       if( len == 0 || dest == src )
+               return dest;
        
        if( (tVAddr)dest > (tVAddr)src + len )
                return memcpy(dest, src, len);
        if( (tVAddr)dest + len < (tVAddr)src )
                return memcpy(dest, src, len);
        
+       // NOTE: Assumes memcpy works forward
+       if( (tVAddr)dest < (tVAddr)src )
+               return memcpy(dest, src, len);
+
        if( (tVAddr)dest < (tVAddr)src )
                block_size = (tVAddr)src - (tVAddr)dest;
        else

UCC git Repository :: git.ucc.asn.au