mirror of
				https://github.com/python/cpython.git
				synced 2025-10-25 18:54:53 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			25 lines
		
	
	
	
		
			439 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
	
		
			439 B
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| /* A perhaps slow but I hope correct implementation of memmove */
 | |
| 
 | |
| extern char *memcpy(char *, char *, int);
 | |
| 
 | |
| char *
 | |
| memmove(char *dst, char *src, int n)
 | |
| {
 | |
| 	char *realdst = dst;
 | |
| 	if (n <= 0)
 | |
| 		return dst;
 | |
| 	if (src >= dst+n || dst >= src+n)
 | |
| 		return memcpy(dst, src, n);
 | |
| 	if (src > dst) {
 | |
| 		while (--n >= 0)
 | |
| 			*dst++ = *src++;
 | |
| 	}
 | |
| 	else if (src < dst) {
 | |
| 		src += n;
 | |
| 		dst += n;
 | |
| 		while (--n >= 0)
 | |
| 			*--dst = *--src;
 | |
| 	}
 | |
| 	return realdst;
 | |
| }
 | 
