Mercurial > cpython-lru_cache-weakref
annotate Python/memmove.c @ 17848:6960b2bbbfca legacy-trunk
First step in porting MacPython modules to OSX/unix: break all references between modules except for the obj_New() and obj_Convert() routines, the PyArg_Parse and Py_BuildValue helpers.
And these can now be vectored through glue routines (by defining USE_TOOLBOX_OBJECT_GLUE) which will do the necessary imports, whereupon the module's init routine will tell the glue routine about the real conversion routine address and everything is fine again.
| author | Jack Jansen <jack.jansen@cwi.nl> |
|---|---|
| date | Thu, 17 May 2001 21:58:34 +0000 |
| parents | 6f6f965c5e2d |
| children |
| rev | line source |
|---|---|
| 1449 | 1 |
| 2 /* A perhaps slow but I hope correct implementation of memmove */ | |
| 3 | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13256
diff
changeset
|
4 extern char *memcpy(char *, char *, int); |
| 1449 | 5 |
| 6 char * | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13256
diff
changeset
|
7 memmove(char *dst, char *src, int n) |
| 1449 | 8 { |
| 9 char *realdst = dst; | |
| 10 if (n <= 0) | |
| 11 return dst; | |
| 12 if (src >= dst+n || dst >= src+n) | |
| 13 return memcpy(dst, src, n); | |
| 14 if (src > dst) { | |
| 15 while (--n >= 0) | |
| 16 *dst++ = *src++; | |
| 17 } | |
| 18 else if (src < dst) { | |
| 19 src += n; | |
| 20 dst += n; | |
| 21 while (--n >= 0) | |
| 22 *--dst = *--src; | |
| 23 } | |
| 24 return realdst; | |
| 25 } |
