From 5f96c07131a9c3b1a194c8c0fc27a470d2ea71a0 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Sat, 30 Jun 2018 14:33:32 +0100 Subject: [PATCH] debugg --- C/adtdefs.c | 6 +- C/adtdefs.c.new | 6 +- C/alloc.c | 2 +- C/atomic.c | 2 +- C/blobs.c | 4 +- C/c_interface.c | 9 +- C/cdmgr.c | 6 +- C/compiler.c | 4 +- C/dbase.c | 8 +- C/dlmalloc.c | 4 +- C/errors.c | 24 +- C/exo_udi.c | 2 +- C/fli_absmi_insts.h | 2 +- C/globals.c | 4 +- C/grow.c | 6 +- C/index.c | 4 +- C/init.c | 4 +- C/text.c | 6 +- C/text.c.new | 6 +- C/utilpreds.c | 12 +- CMakeLists.txt | 2 +- CXX/yapi.cpp | 2 +- H/Yapproto.h | 1 - H/absmi.h | 4 +- H/amijit.h | 2 +- H/utarray.h | 6 +- JIT/JIT_interface.cpp | 2 +- OPTYap/or.copy_engine.c | 12 +- OPTYap/tab.completion.c | 6 +- OPTYap/tab.macros.h | 6 +- OPTYap/tab.tries.c | 26 +- OPTYap/tab.tries.insts.h | 2 +- OPTYap/traced_tab.tries.insts.h | 2 +- autoconf/config.h.in | 2 +- autoconf/configure.in | 2 +- cmake/Config.cmake | 2 +- config.h.cmake | 2 +- console/LGPL/pl-ntmain.c | 2 +- library/charsio.yap | 2 +- library/dialect/swi/os/dtoa.c | 2 +- library/dialect/swi/os/pl-buffer.c | 2 +- library/dialect/swi/os/pl-file.c | 4 +- library/dialect/swi/os/pl-fmt.c | 6 +- library/dialect/swi/os/pl-nt.c | 2 +- library/dialect/swi/os/pl-os.c | 2 +- library/dialect/swi/os/pl-read.c | 2 +- library/dialect/swi/os/pl-rl.c | 2 +- library/dialect/swi/os/pl-stream.c | 16 +- library/dialect/swi/os/pl-text.c | 16 +- library/dialect/swi/os/pl-write.c | 12 +- library/matrix/matrix.c | 4 +- library/mpi/mpi.c | 2 +- library/regex/regcomp.c | 2 +- library/regex/regexec.c | 2 +- library/rltree/range_list.c | 4 +- library/system/crypto/md5.c | 6 +- library/tries/base_itries.h | 2 +- library/tries/core_tries.c | 8 +- library/tries/core_tries.h | 2 +- os/alias.c | 2 +- os/assets.c | 10 +- os/files.c | 2 +- os/fmemopen-android.c | 4 +- os/fmemopen.c | 4 +- os/iopreds.c | 4 +- os/iopreds.h | 1 - os/open_memstream.c | 2 +- os/ypsocks.c | 8 +- packages/cuda/bpredscpu.cpp | 2 +- packages/cuda/cuda.c | 6 +- packages/cuda/dbio.cu | 4 +- packages/cuda/joincpu.cpp | 2 +- packages/cuda/lista.cu | 40 +- packages/cuda/memory.cu | 2 +- packages/cuda/old/cuda.c | 6 +- packages/cuda/old/dbio.cu | 4 +- packages/cuda/old/lista.cu | 40 +- packages/cuda/old/memory.cu | 2 +- packages/cuda/selectproyectcpu.cpp | 10 +- packages/cuda/unioncpu2.cpp | 6 +- packages/myddas/pl/myddas.ypp | 1 + packages/myddas/sqlite3/myddas_sqlite3.c | 2 +- packages/myddas/sqlite3/sqlitest.yap | 6 +- packages/myddas/sqlite3/src/sqlite3.c | 764 +++++++++---------- packages/prism/src/c/mp/mp_sw.c | 2 +- packages/python/pyio.c | 2 +- packages/udi/utarray.h | 6 +- packages/yap-lbfgs/liblbfgs-1.10/lib/lbfgs.c | 2 +- pl/protect.yap | 1 + swi/console/console.c | 4 +- 90 files changed, 632 insertions(+), 623 deletions(-) diff --git a/C/adtdefs.c b/C/adtdefs.c index e79ffb87a..e486176c2 100755 --- a/C/adtdefs.c +++ b/C/adtdefs.c @@ -221,7 +221,7 @@ Atom Yap_LookupAtomWithLength(const char *atom, ptr = Yap_AllocCodeSpace(len0 + 1); if (!ptr) return NIL; - memcpy(ptr, atom, len0); + memmove(ptr, atom, len0); ptr[len0] = '\0'; at = LookupAtom(ptr); Yap_FreeCodeSpace(ptr); @@ -1010,7 +1010,7 @@ Atom Yap_LookupAtomWithLength(const char *atom, if (IsApplTerm(t0)) { Yap_FreeCodeSpace((char *)RepAppl(t0)); } - memcpy((void *)pt, (void *)ap, sz); + memmove((void *)pt, (void *)ap, sz); p->ValueOfVE = AbsAppl(pt); #endif } else if (IsStringTerm(v)) { @@ -1025,7 +1025,7 @@ Atom Yap_LookupAtomWithLength(const char *atom, if (IsApplTerm(t0)) { Yap_FreeCodeSpace((char *)RepAppl(t0)); } - memcpy((void *)pt, (void *)ap, sz); + memmove((void *)pt, (void *)ap, sz); p->ValueOfVE = AbsAppl(pt); } else { if (IsApplTerm(t0)) { diff --git a/C/adtdefs.c.new b/C/adtdefs.c.new index fed2fd720..02c395d45 100755 --- a/C/adtdefs.c.new +++ b/C/adtdefs.c.new @@ -216,7 +216,7 @@ Atom Yap_LookupAtomWithLength(const char *atom, ptr = Yap_AllocCodeSpace(len0 + 1); if (!ptr) return NIL; - memcpy(ptr, atom, len0); + memmove(ptr, atom, len0); ptr[len0] = '\0'; at = LookupAtom(ptr); Yap_FreeCodeSpace(ptr); @@ -1004,7 +1004,7 @@ void Yap_PutValue(Atom a, Term v) { if (IsApplTerm(t0)) { Yap_FreeCodeSpace((char *)RepAppl(t0)); } - memcpy((void *)pt, (void *)ap, sz); + memmove((void *)pt, (void *)ap, sz); p->ValueOfVE = AbsAppl(pt); #endif } else if (IsStringTerm(v)) { @@ -1019,7 +1019,7 @@ void Yap_PutValue(Atom a, Term v) { if (IsApplTerm(t0)) { Yap_FreeCodeSpace((char *)RepAppl(t0)); } - memcpy((void *)pt, (void *)ap, sz); + memmove((void *)pt, (void *)ap, sz); p->ValueOfVE = AbsAppl(pt); } else { if (IsApplTerm(t0)) { diff --git a/C/alloc.c b/C/alloc.c index e05341af7..165b32ad3 100644 --- a/C/alloc.c +++ b/C/alloc.c @@ -1329,7 +1329,7 @@ XX realloc(MALLOC_T ptr, size_t size) { MALLOC_T new = malloc(size); if (ptr) - memcpy(new, ptr, size); + memmove(new, ptr, size); free(ptr); return (new); } diff --git a/C/atomic.c b/C/atomic.c index 2294c8384..8dfac4b3d 100755 --- a/C/atomic.c +++ b/C/atomic.c @@ -2070,7 +2070,7 @@ static Int atom_split(USES_REGS1) { } size_t b_mid = skip_utf8(s0, u_mid) - s0; s1 = s10 = Malloc(b_mid + 1); - memcpy(s1, s, b_mid); + memmove(s1, s, b_mid); s1[b_mid] = '\0'; to1 = MkAtomTerm(Yap_ULookupAtom(s10)); to2 = MkAtomTerm(Yap_ULookupAtom(s0 + b_mid)); diff --git a/C/blobs.c b/C/blobs.c index be3eb8486..69bcb642c 100644 --- a/C/blobs.c +++ b/C/blobs.c @@ -48,7 +48,7 @@ char *Yap_blob_to_string(AtomEntry *ref, const char *s0, size_t sz) { size_t sz0 = strlcpy(s, (char *)RepAtom(AtomSWIStream)->StrOfAE, sz); #else size_t sz0; - char *f = (char *)memcpy(s, (char *)RepAtom(AtomSWIStream)->StrOfAE, sz); + char *f = (char *)memmove(s, (char *)RepAtom(AtomSWIStream)->StrOfAE, sz); f[0] = '\0'; sz0 = f - s; #endif @@ -156,7 +156,7 @@ AtomEntry *Yap_lookupBlob(void *blob, size_t len, void *type0, int *new) { ae->PropsOfAE = AbsBlobProp(b); ae->NextOfAE = AbsAtom(Blobs); ae->rep.blob->length = len; - memcpy(ae->rep.blob->data, blob, len); + memmove(ae->rep.blob->data, blob, len); Blobs = ae; if (NOfBlobs > NOfBlobsMax) { Yap_signal(YAP_CDOVF_SIGNAL); diff --git a/C/c_interface.c b/C/c_interface.c index 6277a5f35..ca1588b5a 100755 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -1898,7 +1898,7 @@ X_API YAP_opaque_tag_t YAP_NewOpaqueType(struct YAP_opaque_handler_struct *f) { return -1; } i = GLOBAL_OpaqueHandlersCount++; - memcpy(GLOBAL_OpaqueHandlers + i, f, sizeof(YAP_opaque_handler_t)); + memmove(GLOBAL_OpaqueHandlers + i, f, sizeof(YAP_opaque_handler_t)); return i; } @@ -2176,7 +2176,8 @@ X_API void YAP_EndConsult(int sno, int *osnop, const char *full) { if (osnop >= 0) Yap_AddAlias(AtomLoopStream, *osnop); Yap_end_consult(); - __android_log_print(ANDROID_LOG_INFO, "YAPDroid ", " closing %s(%d), %d", full, *osnop, sno); + __android_log_print(ANDROID_LOG_INFO, "YAPDroid ", " closing %s:%s(%d), %d", + CurrentModule == 0? "prolog": RepAtom(AtomOfTerm(CurrentModule))->StrOfAE, full, *osnop, sno); // LOCAL_CurSlot); pop_text_stack(lvl); RECOVER_MACHINE_REGS(); @@ -3104,7 +3105,7 @@ X_API Int YAP_AtomToInt(YAP_Atom At) { "No more room for translations"); return -1; } - memcpy(nt, ot, sizeof(atom_t) * MaxAtomTranslations); + memmove(nt, ot, sizeof(atom_t) * MaxAtomTranslations); TR_Atoms = nt; free(ot); MaxAtomTranslations *= 2; @@ -3132,7 +3133,7 @@ X_API Int YAP_FunctorToInt(YAP_Functor f) { "No more room for translations"); return -1; } - memcpy(nt, ot, sizeof(functor_t) * MaxFunctorTranslations); + memmove(nt, ot, sizeof(functor_t) * MaxFunctorTranslations); TR_Functors = nt; free(ot); MaxFunctorTranslations *= 2; diff --git a/C/cdmgr.c b/C/cdmgr.c index 013ea7df1..79fbeca10 100644 --- a/C/cdmgr.c +++ b/C/cdmgr.c @@ -301,7 +301,7 @@ void Yap_BuildMegaClause(PredEntry *ap) { mcl->ClLine = cl->usc.ClLine; ptr = mcl->ClCode; while (TRUE) { - memcpy((void *)ptr, (void *)cl->ClCode, sz); + memmove((void *)ptr, (void *)cl->ClCode, sz); if (has_blobs) { LOCAL_ClDiff = (char *)(ptr) - (char *)cl->ClCode; restore_opcodes(ptr, NULL PASS_REGS); @@ -380,7 +380,7 @@ static void split_megaclause(PredEntry *ap) { new->ClSize = mcl->ClItemSize; new->usc.ClLine = Yap_source_line_no(); new->ClNext = NULL; - memcpy((void *)new->ClCode, (void *)ptr, mcl->ClItemSize); + memmove((void *)new->ClCode, (void *)ptr, mcl->ClItemSize); if (prev) { prev->ClNext = new; } else { @@ -1386,7 +1386,7 @@ static void expand_consult(void) { } new_cs = new_cl + InitialConsultCapacity; /* start copying */ - memcpy((void *)new_cs, (void *)LOCAL_ConsultLow, + memmove((void *)new_cs, (void *)LOCAL_ConsultLow, OldConsultCapacity * sizeof(consult_obj)); /* copying done, release old space */ Yap_FreeCodeSpace((char *)LOCAL_ConsultLow); diff --git a/C/compiler.c b/C/compiler.c index cb307bb43..dc301c997 100644 --- a/C/compiler.c +++ b/C/compiler.c @@ -719,7 +719,7 @@ restart: dest = Yap_emit_extra_size(blob_op, sz / CellSize, sz, &cglobs->cint); /* copy the bignum */ - memcpy(dest, src, sz); + memmove(dest, src, sz); /* note that we don't need to copy size info, unless we wanted to garbage collect clauses ;-) */ cglobs->cint.icpc = cglobs->cint.cpc; @@ -758,7 +758,7 @@ restart: dest = Yap_emit_extra_size(blob_op, sz / CellSize, sz, &cglobs->cint); /* copy the bignum */ - memcpy(dest, src, sz); + memmove(dest, src, sz); /* note that we don't need to copy size info, unless we wanted to garbage collect clauses ;-) */ cglobs->cint.icpc = cglobs->cint.cpc; diff --git a/C/dbase.c b/C/dbase.c index 57e52a05f..05556ef76 100644 --- a/C/dbase.c +++ b/C/dbase.c @@ -642,7 +642,7 @@ static CELL *copy_double(CELL *st, CELL *pt) { static CELL *copy_string(CELL *st, CELL *pt) { UInt sz = pt[1] + 3; /* first thing, store a link to the list before we move on */ - memcpy(st, pt, sizeof(CELL) * sz); + memmove(st, pt, sizeof(CELL) * sz); /* now reserve space */ return st + sz; } @@ -656,7 +656,7 @@ static CELL *copy_big_int(CELL *st, CELL *pt) { st[0] = (CELL)FunctorBigInt; st[1] = pt[1]; /* then the actual number */ - memcpy((void *)(st + 2), (void *)(pt + 2), sz); + memmove((void *)(st + 2), (void *)(pt + 2), sz); st = st + 2 + sz / CellSize; /* then the tail for gc */ st[0] = EndSpecials; @@ -968,7 +968,7 @@ loop: if (HR + sz >= ASP) { goto error2; } - memcpy((void *)HR, (void *)(to_visit_base), sz * sizeof(CELL *)); + memmove((void *)HR, (void *)(to_visit_base), sz * sizeof(CELL *)); to_visit_base = (CELL **)HR; to_visit = to_visit_base + sz; } @@ -1684,7 +1684,7 @@ static DBRef CreateDBStruct(Term Tm, DBProp p, int InFlag, int *pstat, nar = ppt->Contents + Unsigned(NOfCells); } woar = (link_entry *)nar; - memcpy((void *)woar, (const void *)dbg->LinkAr, + memmove((void *)woar, (const void *)dbg->LinkAr, (size_t)(NOfLinks * sizeof(link_entry))); woar += NOfLinks; #ifdef ALIGN_LONGS diff --git a/C/dlmalloc.c b/C/dlmalloc.c index e7ddcb1dd..d522ac825 100644 --- a/C/dlmalloc.c +++ b/C/dlmalloc.c @@ -1978,7 +1978,7 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes; assert(ncopies >= 3); if (ncopies > 9) - memcpy(d, s, copysize); + memmove(d, s, copysize); else { *(d+0) = *(s+0); @@ -2077,7 +2077,7 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes; /* Must alloc, copy, free. */ newmem = mALLOc(nb - MALLOC_ALIGN_MASK); if (newmem != 0) { - memcpy(newmem, oldmem, oldsize - 2*SIZE_SZ); + memmove(newmem, oldmem, oldsize - 2*SIZE_SZ); fREe(oldmem); } } diff --git a/C/errors.c b/C/errors.c index 7d9bebe72..5ef343245 100755 --- a/C/errors.c +++ b/C/errors.c @@ -49,7 +49,7 @@ const char *s = IsAtomTerm(t) ? RepAtom(AtomOfTerm(t))->StrOfAE \ : IsStringTerm(t) ? StringOfTerm(t) : NULL; \ if (s) { \ - char *tmp = malloc(strlen(s) + 1); \ + char *tmp = calloc(1,strlen(s) + 1); \ strcpy(tmp, s); \ i->k = tmp; \ } \ @@ -148,10 +148,10 @@ static void printErr(yap_error_descriptor_t *i) { return; } print_key_i("errorNo", i->errorNo); - print_key_i("errorClass", i->errorClass); - print_key_s("errorAsText", i->errorAsText); + print_key_i("errorClass", (i->errorClass = Yap_errorClass(i->errorNo))); + print_key_s("errorAsText", (i->errorAsText=Yap_errorName(i->errorNo) ) ); print_key_s("errorGoal", i->errorGoal); - print_key_s("classAsText", i->classAsText); + print_key_s("classAsText", (i->classAsText=Yap_errorClassName(i->errorClass))); print_key_i("errorLine", i->errorLine); print_key_s("errorFunction", i->errorFunction); print_key_s("errorFile", i->errorFile); @@ -589,7 +589,7 @@ yap_error_descriptor_t *Yap_popErrorContext(bool mdnew, bool pass) { LOCAL_ActiveError = e->top_error; if (e->errorNo) { if (!LOCAL_ActiveError->errorNo && pass) { - memcpy(LOCAL_ActiveError, e, sizeof(*LOCAL_ActiveError)); + memmove(LOCAL_ActiveError, e, sizeof(*LOCAL_ActiveError)); } else { return e; } @@ -941,6 +941,7 @@ typedef struct c_error_info { ; #include +#include yap_error_class_number Yap_errorClass(yap_error_number e) { return c_error_list[e].class; @@ -956,8 +957,8 @@ yap_error_descriptor_t *Yap_GetException(yap_error_descriptor_t *i) { CACHE_REGS if (i->errorNo != YAP_NO_ERROR) { yap_error_descriptor_t *t = LOCAL_ActiveError, - *nt = malloc(sizeof(yap_error_descriptor_t)); - memcpy(nt, t, sizeof(yap_error_descriptor_t)); + *nt = calloc(1,sizeof(yap_error_descriptor_t)); + memmove(nt, t, sizeof(yap_error_descriptor_t)); return nt; } return 0; @@ -1002,8 +1003,13 @@ static Int read_exception(USES_REGS1) { } static Int print_exception(USES_REGS1) { - yap_error_descriptor_t *t = AddressOfTerm(Deref(ARG1)); - printErr(t); + Term t1 = Deref(ARG1); + if (IsAddressTerm(t1)) { + yap_error_descriptor_t *t = AddressOfTerm(t1); + printErr(t); + } else { + return Yap_WriteTerm(LOCAL_c_error_stream,t1,TermNil PASS_REGS); + } // Yap_DebugPlWriteln(rc); return true; } diff --git a/C/exo_udi.c b/C/exo_udi.c index 90a9cf382..0148cda40 100755 --- a/C/exo_udi.c +++ b/C/exo_udi.c @@ -253,7 +253,7 @@ IntervalUDIRefitIndex(struct index_t **ip, UInt b[] USES_REGS) qsort(s0+1, (size_t)*s0, sizeof(BITS32), compar); it->links[offset0] = s0-sorted0; if (it->udi_free_args) { - memcpy(sorted, s0+1, sizeof(BITS32)*(*s0)); + memmove(sorted, s0+1, sizeof(BITS32)*(*s0)); qsort(sorted, (size_t)*s0, sizeof(BITS32), compar2); sorted += *s0; } diff --git a/C/fli_absmi_insts.h b/C/fli_absmi_insts.h index 371f5248c..4a08b62ec 100644 --- a/C/fli_absmi_insts.h +++ b/C/fli_absmi_insts.h @@ -56,7 +56,7 @@ CPredicate f = PREG->y_u.Osbpp.p->cs.f_code; PREG = NEXTOP(PREG, Osbpp); saveregs(); - d0 = (f)(PASS_REGS1); + d0 = f(PASS_REGS1); setregs(); #ifdef SHADOW_S SREG = Yap_REGS.S_; diff --git a/C/globals.c b/C/globals.c index ec328051b..aa21751bc 100644 --- a/C/globals.c +++ b/C/globals.c @@ -475,7 +475,7 @@ loop: goto overflow; } *ptf++ = AbsAppl(HR); - memcpy(HR, ap2, sizeof(CELL) * (3 + ap2[1])); + memmove(HR, ap2, sizeof(CELL) * (3 + ap2[1])); HR += ap2[1] + 3; break; default: { @@ -756,7 +756,7 @@ restart: res = -1; goto error_handler; } - memcpy(HR, ap, sizeof(CELL) * (3 + ap[1])); + memmove(HR, ap, sizeof(CELL) * (3 + ap[1])); HR += ap[1] + 3; break; default: { diff --git a/C/grow.c b/C/grow.c index 7b067941d..e80ee26f1 100755 --- a/C/grow.c +++ b/C/grow.c @@ -205,13 +205,13 @@ CopyLocalAndTrail( USES_REGS1 ) static void IncrementalCopyStacksFromWorker( USES_REGS1 ) { - memcpy((void *) PtoGloAdjust((CELL *)LOCAL_start_global_copy), + memmove((void *) PtoGloAdjust((CELL *)LOCAL_start_global_copy), (void *) (LOCAL_start_global_copy), (size_t) (LOCAL_end_global_copy - LOCAL_start_global_copy)); - memcpy((void *) PtoLocAdjust((CELL *)LOCAL_start_local_copy), + memmove((void *) PtoLocAdjust((CELL *)LOCAL_start_local_copy), (void *) LOCAL_start_local_copy, (size_t) (LOCAL_end_local_copy - LOCAL_start_local_copy)); - memcpy((void *) PtoTRAdjust((tr_fr_ptr)LOCAL_start_trail_copy), + memmove((void *) PtoTRAdjust((tr_fr_ptr)LOCAL_start_trail_copy), (void *) (LOCAL_start_trail_copy), (size_t) (LOCAL_end_trail_copy - LOCAL_start_trail_copy)); } diff --git a/C/index.c b/C/index.c index b9a8a0921..03e9d41b0 100755 --- a/C/index.c +++ b/C/index.c @@ -825,7 +825,7 @@ static inline int smaller_or_eq(Term t1, Term t2) { } static inline void clcpy(ClauseDef *d, ClauseDef *s) { - memcpy((void *)d, (void *)s, sizeof(ClauseDef)); + memmove((void *)d, (void *)s, sizeof(ClauseDef)); } static void insort(ClauseDef base[], CELL *p, CELL *q, int my_p) { @@ -2670,7 +2670,7 @@ static ClauseDef *copy_clauses(ClauseDef *max0, ClauseDef *min0, CELL *top, save_machine_regs(); siglongjmp(cint->CompilerBotch, 4); } - memcpy((void *)top, (void *)min0, sz); + memmove((void *)top, (void *)min0, sz); return (ClauseDef *)top; } diff --git a/C/init.c b/C/init.c index 5edb89716..c9c20ad38 100755 --- a/C/init.c +++ b/C/init.c @@ -301,7 +301,7 @@ bool Yap_dup_op(OpEntry *op, ModEntry *she) { OpEntry *info = (OpEntry *)Yap_AllocAtomSpace(sizeof(OpEntry)); if (!info) return false; - memcpy(info, op, sizeof(OpEntry)); + memmove(info, op, sizeof(OpEntry)); info->NextForME = she->OpForME; she->OpForME = info; info->OpModule = MkAtomTerm(she->AtomOfME); @@ -1162,7 +1162,7 @@ void Yap_init_yapor_workers(void) { worker_id = proc; Yap_remap_yapor_memory(); LOCAL = REMOTE(worker_id); - memcpy(REMOTE(worker_id), REMOTE(0), sizeof(struct worker_local)); + memmove(REMOTE(worker_id), REMOTE(0), sizeof(struct worker_local)); InitWorker(worker_id); break; } else diff --git a/C/text.c b/C/text.c index eb6000f34..f256bc6e0 100644 --- a/C/text.c +++ b/C/text.c @@ -199,7 +199,7 @@ const void *MallocExportAsRO(const void *pt USES_REGS) { return NULL; size_t sz = o->sz; release_block(o); - memcpy((void *)o, pt, sz); + memmove((void *)o, pt, sz); return realloc((void *)o, sz); } @@ -690,7 +690,7 @@ static Atom write_atom(void *s0, seq_tv_t *out USES_REGS) { } else { size_t n = get_utf8(s, -1, &ch); unsigned char *buf = Malloc(n + 1); - memcpy(buf, s0, n + 1); + memmove(buf, s0, n + 1); return Yap_ULookupAtom(buf); } } @@ -921,7 +921,7 @@ bool Yap_CVT_Text(seq_tv_t *inp, seq_tv_t *out USES_REGS) { const unsigned char *ptr = skip_utf8(buf, out->max); size_t diff = (ptr - buf); char *nbuf = Malloc(diff + 1); - memcpy(nbuf, buf, diff); + memmove(nbuf, buf, diff); nbuf[diff] = '\0'; leng = diff; } diff --git a/C/text.c.new b/C/text.c.new index 7c1d67f41..e4326e3d9 100644 --- a/C/text.c.new +++ b/C/text.c.new @@ -85,7 +85,7 @@ void *protected_pop_text_stack(int i, void *protected, bool tmp, out = LOCAL_FileNameBuf; else out = p; - memcpy(out, protected, sz); + memmove(out, protected, sz); } else { free(p); } @@ -661,7 +661,7 @@ static Atom write_atom(void *s0, seq_tv_t *out, size_t leng USES_REGS) { return Yap_LookupAtom(s0); } else { unsigned char *buf = Malloc(leng + 1); - memcpy(buf, s0, leng); + memmove(buf, s0, leng); buf[leng] = \0; return Yap_ULookupAtom(buf); } @@ -872,7 +872,7 @@ bool Yap_CVT_Text(seq_tv_t *inp, seq_tv_t *out USES_REGS) { size_t max_s = skip_utf8( buf, out-> max )-buf; if (max_s < leng_s) { char *nbuf = Malloc(max_s + 1); - memcpy(nbuf, buf, max_s); + memmove(nbuf, buf, max_s); nbuf[max_s] = '\0'; leng_s = out->max; } diff --git a/C/utilpreds.c b/C/utilpreds.c index b1b8e9f88..fab75ad12 100644 --- a/C/utilpreds.c +++ b/C/utilpreds.c @@ -182,7 +182,7 @@ copy_complex_term(CELL *pt0, CELL *pt0_end, int share, int newattvs, CELL *ptf, if (HR+sz > ASP - 2048) { goto overflow; } - memcpy((void *)HR, (void *)ap2, sz*sizeof(CELL)); + memmove((void *)HR, (void *)ap2, sz*sizeof(CELL)); HR += sz; } else { *ptf++ = d0; /* you can just copy other extensions. */ @@ -845,7 +845,7 @@ export_term_to_buffer(Term inpt, char *buf, char *bptr, CELL *t0 , CELL *tf, siz if (buf + len < (char *)((CELL *)td + (tf-t0))) { return FALSE; } - memcpy((void *)td, (void *)t0, (tf-t0)* sizeof(CELL)); + memmove((void *)td, (void *)t0, (tf-t0)* sizeof(CELL)); bf[0] = (td-buf); bf[1] = (tf-t0); bf[2] = inpt; @@ -945,7 +945,7 @@ export_complex_term(Term tf, CELL *pt0, CELL *pt0_end, char * buf, size_t len0, if (HR+sz > ASP - 2048) { goto overflow; } - memcpy((void *)HR, (void *)ap2, sz*sizeof(CELL)); + memmove((void *)HR, (void *)ap2, sz*sizeof(CELL)); HR += sz; continue; } @@ -1263,7 +1263,7 @@ Yap_ImportTerm(char * buf) { return 0L; } } - memcpy(HR, buf+bc[0], sizeof(CELL)*sz); + memmove(HR, buf+bc[0], sizeof(CELL)*sz); if (IsApplTerm(tinp)) { tret = AbsAppl(HR); import_compound(HR, (char *)HR, buf, HR); @@ -3476,7 +3476,7 @@ hash_complex_term(register CELL *pt0, *st++ = LongIntOfTerm(d0); break; case (CELL)FunctorString: - memcpy(st, RepAppl(d0), (3+RepAppl(d0)[1])*sizeof(CELL)); + memmove(st, RepAppl(d0), (3+RepAppl(d0)[1])*sizeof(CELL)); st += 3+RepAppl(d0)[1]; break; #ifdef USE_GMP @@ -3491,7 +3491,7 @@ hash_complex_term(register CELL *pt0, goto global_overflow; } /* then the actual number */ - memcpy((void *)(st+1), (void *)(pt+1), sz); + memmove((void *)(st+1), (void *)(pt+1), sz); st = st+sz/CellSize; } break; diff --git a/CMakeLists.txt b/CMakeLists.txt index d958f6a08..1ae14e4ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -567,7 +567,7 @@ List(APPEND YLIBS $) List(APPEND YLIBS $) List(APPEND YLIBS $) if (WIN32 OR ANDROID) - List(APPEND YLIBS $) + List(APPEND YLIBS $) List(APPEND YLIBS $) if (WIN32 AND WITH_PYTHON) List(APPEND YLIBS $) diff --git a/CXX/yapi.cpp b/CXX/yapi.cpp index 2642befef..8a51c1e37 100644 --- a/CXX/yapi.cpp +++ b/CXX/yapi.cpp @@ -914,7 +914,7 @@ PredEntry *YAPPredicate::getPred(Term &t, CELL *&out) { } else { ap = RepPredProp(PredPropByFunc(f, m)); if (out) - memcpy( out, RepAppl(t) + 1, ap->ArityOfPE*sizeof(CELL) ); + memmove( out, RepAppl(t) + 1, ap->ArityOfPE*sizeof(CELL) ); else out = RepAppl(t) + 1; } diff --git a/H/Yapproto.h b/H/Yapproto.h index 93f5af1fe..1d170177e 100755 --- a/H/Yapproto.h +++ b/H/Yapproto.h @@ -309,7 +309,6 @@ extern void Yap_DebugPlWriteln(Term t); extern void Yap_DebugErrorPutc(int n); extern void Yap_DebugErrorPuts(const char *s); extern void Yap_DebugWriteIndicator(struct pred_entry *ap); -extern void Yap_PlWriteToStream(Term, int, int); extern void Yap_CloseReadline(void); /* depth_lim.c */ extern bool Yap_InitReadline(Term t); diff --git a/H/absmi.h b/H/absmi.h index ec215741e..2a3e9bacf 100755 --- a/H/absmi.h +++ b/H/absmi.h @@ -181,14 +181,14 @@ INLINE_ONLY void init_absmi_regs(REGSTORE *absmi_regs); INLINE_ONLY void init_absmi_regs(REGSTORE *absmi_regs) { CACHE_REGS - memcpy(absmi_regs, Yap_regp, sizeof(REGSTORE)); + memmove(absmi_regs, Yap_regp, sizeof(REGSTORE)); } INLINE_ONLY void restore_absmi_regs(REGSTORE *old_regs); INLINE_ONLY void restore_absmi_regs(REGSTORE *old_regs) { CACHE_REGS - memcpy(old_regs, Yap_regp, sizeof(REGSTORE)); + memmove(old_regs, Yap_regp, sizeof(REGSTORE)); #ifdef THREADS pthread_setspecific(Yap_yaamregs_key, (void *)old_regs); LOCAL_ThreadHandle.current_yaam_regs = old_regs; diff --git a/H/amijit.h b/H/amijit.h index e9244b7c3..39daff70e 100644 --- a/H/amijit.h +++ b/H/amijit.h @@ -95,7 +95,7 @@ typedef enum{ t_createLowerExpectIntrinsicPass, //Removes llvm.expect intrinsics and creates "block_weights" metadata t_createLowerInvokePass, //Converts invoke and unwind instructions to use sjlj exception handling mechanisms t_createLowerSwitchPass, //Converts SwitchInst instructions into a sequence of chained binary branch instructions - t_createMemCpyOptPass, //Performs optimizations related to eliminating memcpy calls and/or combining multiple stores into memset's + t_createMemCpyOptPass, //Performs optimizations related to eliminating memmove calls and/or combining multiple stores into memset's t_createMergeFunctionsPass, //Discovers identical functions and collapses them t_createObjCARCAPElimPass, //ObjC ARC autorelease pool elimination t_createObjCARCContractPass, //Late ObjC ARC cleanups diff --git a/H/utarray.h b/H/utarray.h index 0c1e59b5b..415652439 100644 --- a/H/utarray.h +++ b/H/utarray.h @@ -95,7 +95,7 @@ typedef struct { #define utarray_push_back(a,p) do { \ utarray_reserve(a,1); \ if ((a)->icd.copy) { (a)->icd.copy( _utarray_eltptr(a,(a)->i++), p); } \ - else { memcpy(_utarray_eltptr(a,(a)->i++), p, (a)->icd.sz); }; \ + else { memmove(_utarray_eltptr(a,(a)->i++), p, (a)->icd.sz); }; \ } while(0) #define utarray_pop_back(a) do { \ @@ -123,7 +123,7 @@ typedef struct { ((a)->i - (j))*((a)->icd.sz)); \ } \ if ((a)->icd.copy) { (a)->icd.copy( _utarray_eltptr(a,j), p); } \ - else { memcpy(_utarray_eltptr(a,j), p, (a)->icd.sz); }; \ + else { memmove(_utarray_eltptr(a,j), p, (a)->icd.sz); }; \ (a)->i++; \ } while(0) @@ -142,7 +142,7 @@ typedef struct { (a)->icd.copy(_utarray_eltptr(a,j+_ut_i), _utarray_eltptr(w,_ut_i)); \ } \ } else { \ - memcpy(_utarray_eltptr(a,j), _utarray_eltptr(w,0), \ + memmove(_utarray_eltptr(a,j), _utarray_eltptr(w,0), \ utarray_len(w)*((a)->icd.sz)); \ } \ (a)->i += utarray_len(w); \ diff --git a/JIT/JIT_interface.cpp b/JIT/JIT_interface.cpp index bf5b5cf58..9a684512e 100644 --- a/JIT/JIT_interface.cpp +++ b/JIT/JIT_interface.cpp @@ -95,7 +95,7 @@ typedef enum{ t_createLowerExpectIntrinsicPass, //Removes llvm.expect intrinsics and creates "block_weights" metadata t_createLowerInvokePass, //Converts invoke and unwind instructions to use sjlj exception handling mechanisms t_createLowerSwitchPass, //Converts SwitchInst instructions into a sequence of chained binary branch instructions - t_createMemCpyOptPass, //Performs optimizations related to eliminating memcpy calls and/or combining multiple stores into memset's + t_createMemCpyOptPass, //Performs optimizations related to eliminating memmove calls and/or combining multiple stores into memset's t_createMergeFunctionsPass, //Discovers identical functions and collapses them t_createObjCARCAPElimPass, //ObjC ARC autorelease pool elimination t_createObjCARCContractPass, //Late ObjC ARC cleanups diff --git a/OPTYap/or.copy_engine.c b/OPTYap/or.copy_engine.c index a45a68d8a..443aeddca 100644 --- a/OPTYap/or.copy_engine.c +++ b/OPTYap/or.copy_engine.c @@ -66,29 +66,29 @@ static void share_private_nodes(int worker_q); #endif #define P_COPY_GLOBAL_TO(Q) \ - memcpy((void *) (worker_offset(Q) + REMOTE_start_global_copy(Q)), \ + memmove((void *) (worker_offset(Q) + REMOTE_start_global_copy(Q)), \ (void *) REMOTE_start_global_copy(Q), \ (size_t) (REMOTE_end_global_copy(Q) - REMOTE_start_global_copy(Q))) #define Q_COPY_GLOBAL_FROM(P) \ - memcpy((void *) LOCAL_start_global_copy, \ + memmove((void *) LOCAL_start_global_copy, \ (void *) (worker_offset(P) + LOCAL_start_global_copy), \ (size_t) (LOCAL_end_global_copy - LOCAL_start_global_copy)) #define P_COPY_LOCAL_TO(Q) \ - memcpy((void *) (worker_offset(Q) + REMOTE_start_local_copy(Q)), \ + memmove((void *) (worker_offset(Q) + REMOTE_start_local_copy(Q)), \ (void *) REMOTE_start_local_copy(Q), \ (size_t) (REMOTE_end_local_copy(Q) - REMOTE_start_local_copy(Q))) #define Q_COPY_LOCAL_FROM(P) \ - memcpy((void *) LOCAL_start_local_copy, \ + memmove((void *) LOCAL_start_local_copy, \ (void *) (worker_offset(P) + LOCAL_start_local_copy), \ (size_t) (LOCAL_end_local_copy - LOCAL_start_local_copy)) #define P_COPY_TRAIL_TO(Q) \ - memcpy((void *) (worker_offset(Q) + REMOTE_start_trail_copy(Q)), \ + memmove((void *) (worker_offset(Q) + REMOTE_start_trail_copy(Q)), \ (void *) REMOTE_start_trail_copy(Q), \ (size_t) (REMOTE_end_trail_copy(Q) - REMOTE_start_trail_copy(Q))) #define Q_COPY_TRAIL_FROM(P) \ - memcpy((void *) LOCAL_start_trail_copy, \ + memmove((void *) LOCAL_start_trail_copy, \ (void *) (worker_offset(P) + LOCAL_start_trail_copy), \ (size_t) (LOCAL_end_trail_copy - LOCAL_start_trail_copy)) diff --git a/OPTYap/tab.completion.c b/OPTYap/tab.completion.c index c8ad626dd..5dc16a557 100644 --- a/OPTYap/tab.completion.c +++ b/OPTYap/tab.completion.c @@ -409,13 +409,13 @@ void resume_suspension_frame(susp_fr_ptr resume_fr, or_fr_ptr top_or_fr) { sg_fr_ptr sg_frame; /* copy suspended stacks */ - memcpy(SuspFr_global_reg(resume_fr), + memmove(SuspFr_global_reg(resume_fr), SuspFr_global_start(resume_fr), SuspFr_global_size(resume_fr)); - memcpy(SuspFr_local_reg(resume_fr), + memmove(SuspFr_local_reg(resume_fr), SuspFr_local_start(resume_fr), SuspFr_local_size(resume_fr)); - memcpy(SuspFr_trail_reg(resume_fr), + memmove(SuspFr_trail_reg(resume_fr), SuspFr_trail_start(resume_fr), SuspFr_trail_size(resume_fr)); diff --git a/OPTYap/tab.macros.h b/OPTYap/tab.macros.h index 290246e6d..c8ba70d0b 100644 --- a/OPTYap/tab.macros.h +++ b/OPTYap/tab.macros.h @@ -574,9 +574,9 @@ typedef enum { SuspFr_global_size(SUSP_FR) = H_SIZE; \ SuspFr_local_size(SUSP_FR) = B_SIZE; \ SuspFr_trail_size(SUSP_FR) = TR_SIZE; \ - memcpy(SuspFr_global_start(SUSP_FR), SuspFr_global_reg(SUSP_FR), H_SIZE); \ - memcpy(SuspFr_local_start(SUSP_FR), SuspFr_local_reg(SUSP_FR), B_SIZE); \ - memcpy(SuspFr_trail_start(SUSP_FR), SuspFr_trail_reg(SUSP_FR), TR_SIZE) + memmove(SuspFr_global_start(SUSP_FR), SuspFr_global_reg(SUSP_FR), H_SIZE); \ + memmove(SuspFr_local_start(SUSP_FR), SuspFr_local_reg(SUSP_FR), B_SIZE); \ + memmove(SuspFr_trail_start(SUSP_FR), SuspFr_trail_reg(SUSP_FR), TR_SIZE) #define new_subgoal_trie_node(NODE, ENTRY, CHILD, PARENT, NEXT) \ ALLOC_SUBGOAL_TRIE_NODE(NODE); \ diff --git a/OPTYap/tab.tries.c b/OPTYap/tab.tries.c index 9f21e184d..53e19d39a 100644 --- a/OPTYap/tab.tries.c +++ b/OPTYap/tab.tries.c @@ -665,12 +665,12 @@ static void traverse_subgoal_trie(sg_node_ptr current_node, char *str, bucket = Hash_buckets(hash); last_bucket = bucket + Hash_num_buckets(hash); current_arity = (int *)malloc(sizeof(int) * (arity[0] + 1)); - memcpy(current_arity, arity, sizeof(int) * (arity[0] + 1)); + memmove(current_arity, arity, sizeof(int) * (arity[0] + 1)); do { if (*bucket) { traverse_subgoal_trie(*bucket, str, str_index, arity, mode, TRAVERSE_POSITION_FIRST PASS_REGS); - memcpy(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); + memmove(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); #ifdef TRIE_COMPACT_PAIRS if (arity[arity[0]] == -2 && str[str_index - 1] != '[') str[str_index - 1] = ','; @@ -687,7 +687,7 @@ static void traverse_subgoal_trie(sg_node_ptr current_node, char *str, /* save current state if first sibling node */ if (position == TRAVERSE_POSITION_FIRST) { current_arity = (int *)malloc(sizeof(int) * (arity[0] + 1)); - memcpy(current_arity, arity, sizeof(int) * (arity[0] + 1)); + memmove(current_arity, arity, sizeof(int) * (arity[0] + 1)); current_str_index = str_index; current_mode = mode; } @@ -737,7 +737,7 @@ static void traverse_subgoal_trie(sg_node_ptr current_node, char *str, mode = current_mode; current_node = TrNode_next(current_node); while (current_node) { - memcpy(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); + memmove(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); #ifdef TRIE_COMPACT_PAIRS if (arity[arity[0]] == -2 && str[str_index - 1] != '[') str[str_index - 1] = ','; @@ -768,12 +768,12 @@ static void traverse_answer_trie(ans_node_ptr current_node, char *str, bucket = Hash_buckets(hash); last_bucket = bucket + Hash_num_buckets(hash); current_arity = (int *)malloc(sizeof(int) * (arity[0] + 1)); - memcpy(current_arity, arity, sizeof(int) * (arity[0] + 1)); + memmove(current_arity, arity, sizeof(int) * (arity[0] + 1)); do { if (*bucket) { traverse_answer_trie(*bucket, str, str_index, arity, var_index, mode, TRAVERSE_POSITION_FIRST PASS_REGS); - memcpy(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); + memmove(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); #ifdef TRIE_COMPACT_PAIRS if (arity[arity[0]] == -2 && str[str_index - 1] != '[') str[str_index - 1] = ','; @@ -790,7 +790,7 @@ static void traverse_answer_trie(ans_node_ptr current_node, char *str, /* save current state if first sibling node */ if (position == TRAVERSE_POSITION_FIRST) { current_arity = (int *)malloc(sizeof(int) * (arity[0] + 1)); - memcpy(current_arity, arity, sizeof(int) * (arity[0] + 1)); + memmove(current_arity, arity, sizeof(int) * (arity[0] + 1)); current_str_index = str_index; current_var_index = var_index; current_mode = mode; @@ -832,7 +832,7 @@ static void traverse_answer_trie(ans_node_ptr current_node, char *str, mode = current_mode; current_node = TrNode_next(current_node); while (current_node) { - memcpy(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); + memmove(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); #ifdef TRIE_COMPACT_PAIRS if (arity[arity[0]] == -2 && str[str_index - 1] != '[') str[str_index - 1] = ','; @@ -863,12 +863,12 @@ static void traverse_global_trie(gt_node_ptr current_node, char *str, bucket = Hash_buckets(hash); last_bucket = bucket + Hash_num_buckets(hash); current_arity = (int *)malloc(sizeof(int) * (arity[0] + 1)); - memcpy(current_arity, arity, sizeof(int) * (arity[0] + 1)); + memmove(current_arity, arity, sizeof(int) * (arity[0] + 1)); do { if (*bucket) { traverse_global_trie(*bucket, str, str_index, arity, mode, TRAVERSE_POSITION_FIRST PASS_REGS); - memcpy(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); + memmove(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); #ifdef TRIE_COMPACT_PAIRS if (arity[arity[0]] == -2 && str[str_index - 1] != '[') str[str_index - 1] = ','; @@ -885,7 +885,7 @@ static void traverse_global_trie(gt_node_ptr current_node, char *str, /* save current state if first sibling node */ if (position == TRAVERSE_POSITION_FIRST) { current_arity = (int *)malloc(sizeof(int) * (arity[0] + 1)); - memcpy(current_arity, arity, sizeof(int) * (arity[0] + 1)); + memmove(current_arity, arity, sizeof(int) * (arity[0] + 1)); current_str_index = str_index; current_mode = mode; } @@ -913,7 +913,7 @@ static void traverse_global_trie(gt_node_ptr current_node, char *str, mode = current_mode; current_node = TrNode_next(current_node); while (current_node) { - memcpy(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); + memmove(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); #ifdef TRIE_COMPACT_PAIRS if (arity[arity[0]] == -2 && str[str_index - 1] != '[') str[str_index - 1] = ','; @@ -1200,7 +1200,7 @@ sg_fr_ptr subgoal_search(yamop *preg, CELL **Yaddr) { #ifdef MODE_DIRECTED_TABLING if (subs_pos) { ALLOC_BLOCK(mode_directed, subs_pos * sizeof(int), int); - memcpy((void *)mode_directed, (void *)aux_mode_directed, + memmove((void *)mode_directed, (void *)aux_mode_directed, subs_pos * sizeof(int)); } else mode_directed = NULL; diff --git a/OPTYap/tab.tries.insts.h b/OPTYap/tab.tries.insts.h index 55ae5df44..8553fe50c 100644 --- a/OPTYap/tab.tries.insts.h +++ b/OPTYap/tab.tries.insts.h @@ -77,7 +77,7 @@ #define copy_aux_stack() \ { arity_t size = 3 + heap_arity + subs_arity + vars_arity; \ TOP_STACK -= size; \ - memcpy(TOP_STACK, aux_stack, size * sizeof(CELL *)); \ + memmove(TOP_STACK, aux_stack, size * sizeof(CELL *)); \ aux_stack = TOP_STACK; \ }/* macros 'store_trie_node', 'restore_trie_node' and 'pop_trie_node' ** ** do not include 'set_cut' because trie instructions are cut safe */ diff --git a/OPTYap/traced_tab.tries.insts.h b/OPTYap/traced_tab.tries.insts.h index 2c8ac324d..d873bbc18 100644 --- a/OPTYap/traced_tab.tries.insts.h +++ b/OPTYap/traced_tab.tries.insts.h @@ -77,7 +77,7 @@ #define copy_aux_stack() \ { int size = 3 + heap_arity + subs_arity + vars_arity; \ TOP_STACK -= size; \ - memcpy(TOP_STACK, aux_stack, size * sizeof(CELL *)); \ + memmove(TOP_STACK, aux_stack, size * sizeof(CELL *)); \ aux_stack = TOP_STACK; \ }/* macros 'store_trie_node', 'restore_trie_node' and 'pop_trie_node' ** ** do not include 'set_cut' because trie instructions are cut safe */ diff --git a/autoconf/config.h.in b/autoconf/config.h.in index e947b7598..63aaa0301 100644 --- a/autoconf/config.h.in +++ b/autoconf/config.h.in @@ -496,7 +496,7 @@ /* Define to 1 if you have the `mbsnrtowcs' function. */ #undef HAVE_MBSNRTOWCS -/* Define to 1 if you have the `memcpy' function. */ +/* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMCPY /* Define to 1 if you have the `memmove' function. */ diff --git a/autoconf/configure.in b/autoconf/configure.in index 90f79ab4f..525de3f88 100755 --- a/autoconf/configure.in +++ b/autoconf/configure.in @@ -1767,7 +1767,7 @@ AC_CHECK_FUNCS(localeconv localtime lstat mallinfo) AC_CHECK_FUNCS(mbscoll) AC_CHECK_FUNCS(mbscasecoll) AC_CHECK_FUNCS(mbsnrtowcs) -AC_CHECK_FUNCS(memcpy memmove mkstemp mktemp) +AC_CHECK_FUNCS(memmove memmove mkstemp mktemp) AC_CHECK_FUNCS(nanosleep mktime opendir) AC_CHECK_FUNCS(putenv rand random drand48) AC_CHECK_FUNCS(readlink realpath regexec) diff --git a/cmake/Config.cmake b/cmake/Config.cmake index 89331f891..094d3ce42 100644 --- a/cmake/Config.cmake +++ b/cmake/Config.cmake @@ -291,7 +291,7 @@ check_symbol_exists(mallinfo " malloc.h" HAVE_MALLINFO) check_function_exists(mbscoll HAVE_MBSCOLL) check_function_exists(mbscasecoll HAVE_MBSCASECOLL) check_function_exists(mbsnrtowcs HAVE_MBSNRTOWCS) -check_function_exists(memcpy HAVE_MEMCPY) +check_function_exists(memmove HAVE_MEMCPY) check_function_exists(memmove HAVE_MEMMOVE) check_function_exists(mkstemp HAVE_MKSTEMP) check_function_exists(mktemp HAVE_MKTEMP) diff --git a/config.h.cmake b/config.h.cmake index 2bf5293f7..80f3a6854 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -897,7 +897,7 @@ function. */ #cmakedefine HAVE_MBSNRTOWCS ${HAVE_MBSNRTOWCS} #endif -/* Define to 1 if you have the `memcpy' function. */ +/* Define to 1 if you have the `memmove' function. */ #ifndef HAVE_MEMCPY #cmakedefine HAVE_MEMCPY ${HAVE_MEMCPY} #endif diff --git a/console/LGPL/pl-ntmain.c b/console/LGPL/pl-ntmain.c index fed5daa3a..291e3737e 100755 --- a/console/LGPL/pl-ntmain.c +++ b/console/LGPL/pl-ntmain.c @@ -356,7 +356,7 @@ Srlc_write(void *handle, char *buffer, size_t size) { char buf[sizeof(TCHAR)]; /* Pad to TCHAR */ size_t i = sizeof(TCHAR) - (size-n); - memcpy(buf, buffer+n, i); + memmove(buf, buffer+n, i); for(; isign, (char *)&y->sign, \ +#define Bcopy(x,y) memmove((char *)&x->sign, (char *)&y->sign, \ y->wds*sizeof(Long) + 2*sizeof(int)) static Bigint * diff --git a/library/dialect/swi/os/pl-buffer.c b/library/dialect/swi/os/pl-buffer.c index e4ea5ff48..c99a4e9c0 100644 --- a/library/dialect/swi/os/pl-buffer.c +++ b/library/dialect/swi/os/pl-buffer.c @@ -42,7 +42,7 @@ growBuffer(Buffer b, size_t minfree) { if ( !(new = malloc(sz)) ) return FALSE; - memcpy(new, b->static_buffer, osz); + memmove(new, b->static_buffer, osz); } else { if ( !(new = realloc(b->base, sz)) ) return FALSE; diff --git a/library/dialect/swi/os/pl-file.c b/library/dialect/swi/os/pl-file.c index 1b9a70644..fc3083728 100644 --- a/library/dialect/swi/os/pl-file.c +++ b/library/dialect/swi/os/pl-file.c @@ -2381,7 +2381,7 @@ re_buffer(IOSTREAM *s, const char *from, size_t len) { s->bufp = s->limitp = s->buffer; } - memcpy(s->bufp, from, len); + memmove(s->bufp, from, len); s->bufp += len; } @@ -5846,7 +5846,7 @@ struct PL_local_data *Yap_InitThreadIO(int wid) return p; } #if THREADS - memcpy(p, Yap_local[0]->PL_local_data_p_, sizeof(struct PL_local_data)); + memmove(p, Yap_local[0]->PL_local_data_p_, sizeof(struct PL_local_data)); #endif return p; } diff --git a/library/dialect/swi/os/pl-fmt.c b/library/dialect/swi/os/pl-fmt.c index 7ef3b45f2..9aedb2ae4 100644 --- a/library/dialect/swi/os/pl-fmt.c +++ b/library/dialect/swi/os/pl-fmt.c @@ -1426,7 +1426,7 @@ localizeDecimalPoint(PL_locale *locale, Buffer b) if ( strncmp(e, ddp, ddplen) == 0 ) { if ( dplen == ddplen ) - { memcpy(e, dp, dplen); + { memmove(e, dp, dplen); } else { char *ob = baseBuffer(b, char); if ( dplen > ddplen && !growBuffer(b, dplen-ddplen) ) @@ -1434,7 +1434,7 @@ localizeDecimalPoint(PL_locale *locale, Buffer b) e += baseBuffer(b, char) - ob; memmove(&e[dplen-ddplen], e, strlen(e)+1); - memcpy(e, dp, dplen); + memmove(e, dp, dplen); } } } @@ -1477,7 +1477,7 @@ groupDigits(PL_locale *locale, Buffer b) { *o-- = *e--; if ( --gsize == 0 && e>=s ) { o -= thslen-1; - memcpy(o, ths, thslen); + memmove(o, ths, thslen); o--; if ( grouping[1] == 0 ) gsize = grouping[0]; diff --git a/library/dialect/swi/os/pl-nt.c b/library/dialect/swi/os/pl-nt.c index 3486dcfbd..b7d204de1 100755 --- a/library/dialect/swi/os/pl-nt.c +++ b/library/dialect/swi/os/pl-nt.c @@ -429,7 +429,7 @@ win_exec(size_t len, const wchar_t *cmd, UINT show) /* ensure 0-terminated */ wcmd = PL_malloc((len+1)*sizeof(wchar_t)); - memcpy(wcmd, cmd, len*sizeof(wchar_t)); + memmove(wcmd, cmd, len*sizeof(wchar_t)); wcmd[len] = 0; rval = CreateProcessW(NULL, /* app */ diff --git a/library/dialect/swi/os/pl-os.c b/library/dialect/swi/os/pl-os.c index ecfa30510..f144fde79 100755 --- a/library/dialect/swi/os/pl-os.c +++ b/library/dialect/swi/os/pl-os.c @@ -953,7 +953,7 @@ getenv3(const char *name, char *buf, size_t len) if ( s ) { if ( (l=strlen(s)) < len ) - memcpy(buf, s, l+1); + memmove(buf, s, l+1); else if ( len > 0 ) buf[0] = EOS; /* empty string if not fit */ diff --git a/library/dialect/swi/os/pl-read.c b/library/dialect/swi/os/pl-read.c index 45381df79..a96c5f5f6 100644 --- a/library/dialect/swi/os/pl-read.c +++ b/library/dialect/swi/os/pl-read.c @@ -253,7 +253,7 @@ static void growToBuffer(int c, ReadData _PL_rd) { if (rb.base == rb.fast) /* intptr_t clause: jump to use malloc() */ { rb.base = PL_malloc(FASTBUFFERSIZE * 2); - memcpy(rb.base, rb.fast, FASTBUFFERSIZE); + memmove(rb.base, rb.fast, FASTBUFFERSIZE); } else rb.base = PL_realloc(rb.base, rb.size * 2); diff --git a/library/dialect/swi/os/pl-rl.c b/library/dialect/swi/os/pl-rl.c index 76ab00cab..4a8abc72b 100755 --- a/library/dialect/swi/os/pl-rl.c +++ b/library/dialect/swi/os/pl-rl.c @@ -491,7 +491,7 @@ Sread_readline(void *handle, char *buf, size_t size) { PL_warning("Input line too long"); /* must be tested! */ l = size-1; } - memcpy(buf, line, l); + memmove(buf, line, l); buf[l++] = '\n'; rval = l; diff --git a/library/dialect/swi/os/pl-stream.c b/library/dialect/swi/os/pl-stream.c index a69c62028..f8ab272f0 100755 --- a/library/dialect/swi/os/pl-stream.c +++ b/library/dialect/swi/os/pl-stream.c @@ -239,7 +239,7 @@ S__setbuf(IOSTREAM *s, char *buffer, size_t size) } } - memcpy(newbuf, s->bufp, copy); + memmove(newbuf, s->bufp, copy); S__removebuf(s); s->unbuffer = newunbuf; s->bufp = s->buffer = newbuf; @@ -1173,7 +1173,7 @@ Speekcode(IOSTREAM *s) if ( s->bufp + UNDO_SIZE > s->limitp && !(s->flags&SIO_USERBUF) ) { safe = s->limitp - s->bufp; - memcpy(s->buffer-safe, s->bufp, safe); + memmove(s->buffer-safe, s->bufp, safe); } start = s->bufp; @@ -1262,11 +1262,11 @@ Sfread(void *data, size_t size, size_t elms, IOSTREAM *s) { size_t avail = s->limitp - s->bufp; if ( chars <= avail ) - { memcpy(buf, s->bufp, chars); + { memmove(buf, s->bufp, chars); s->bufp += chars; return elms; } else - { memcpy(buf, s->bufp, avail); + { memmove(buf, s->bufp, avail); chars -= avail; buf += avail; s->bufp += avail; @@ -1325,7 +1325,7 @@ Sread_pending(IOSTREAM *s, char *buf, size_t limit, int flags) n = s->limitp - s->bufp; if ( n > limit ) n = limit; - memcpy(&buf[done], s->bufp, n); + memmove(&buf[done], s->bufp, n); s->bufp += n; return done+n; @@ -3439,7 +3439,7 @@ Swrite_memfile(void *handle, char *buf, size_t size) } if ( !mf->malloced ) { if ( mf->buffer ) - memcpy(nb, mf->buffer, mf->allocated); + memmove(nb, mf->buffer, mf->allocated); mf->malloced = TRUE; } } else @@ -3453,7 +3453,7 @@ Swrite_memfile(void *handle, char *buf, size_t size) *mf->bufferp = mf->buffer = nb; } - memcpy(&mf->buffer[mf->here], buf, size); + memmove(&mf->buffer[mf->here], buf, size); mf->here += size; if ( mf->here > mf->size ) @@ -3478,7 +3478,7 @@ Sread_memfile(void *handle, char *buf, size_t size) size = mf->size - mf->here; } - memcpy(buf, &mf->buffer[mf->here], size); + memmove(buf, &mf->buffer[mf->here], size); mf->here += size; return size; diff --git a/library/dialect/swi/os/pl-text.c b/library/dialect/swi/os/pl-text.c index 29b2668db..c800224f5 100644 --- a/library/dialect/swi/os/pl-text.c +++ b/library/dialect/swi/os/pl-text.c @@ -69,7 +69,7 @@ PL_save_text(PL_chars_t *text, int flags) { size_t bl = bufsize_text(text, text->length+1); void *new = PL_malloc(bl); - memcpy(new, text->text.t, bl); + memmove(new, text->text.t, bl); text->text.t = new; text->storage = PL_CHARS_MALLOC; } else if ( text->storage == PL_CHARS_LOCAL ) @@ -104,7 +104,7 @@ PL_from_stack_text(PL_chars_t *text) { size_t bl = bufsize_text(text, text->length+1); if ( bl < sizeof(text->buf) ) - { memcpy(text->buf, text->text.t, bl); + { memmove(text->buf, text->text.t, bl); text->text.t = text->buf; text->storage = PL_CHARS_LOCAL; } else @@ -135,7 +135,7 @@ ui64toa(uint64_t val, char *out) } while ( val ); nbDigs = ptrOrg - ptr; - memcpy(out, ptr, nbDigs); + memmove(out, ptr, nbDigs); out += nbDigs; *out = '\0'; @@ -610,7 +610,7 @@ PL_promote_text(PL_chars_t *text) unsigned char *e = &buf[text->length]; pl_wchar_t *t = (pl_wchar_t*)text->buf; - memcpy(buf, text->buf, text->length*sizeof(char)); + memmove(buf, text->buf, text->length*sizeof(char)); while(flength]; char *t = text->buf; - memcpy(buf, text->buf, text->length*sizeof(pl_wchar_t)); + memmove(buf, text->buf, text->length*sizeof(pl_wchar_t)); while(f 0xff ) return FALSE; @@ -1021,7 +1021,7 @@ PL_canonise_text(PL_chars_t *text) text->encoding = ENC_WCHAR; if ( len+1 < sizeof(text->buf)/sizeof(wchar_t) ) { if ( text->text.t == text->buf ) - { memcpy(b2, text->buf, sizeof(text->buf)); + { memmove(b2, text->buf, sizeof(text->buf)); from = b2; } text->text.w = (wchar_t*)text->buf; @@ -1239,7 +1239,7 @@ PL_concat_text(int n, PL_chars_t **text, PL_chars_t *result) } for(to=result->text.t, i=0; itext.t, text[i]->length); + { memmove(to, text[i]->text.t, text[i]->length); to += text[i]->length; } *to = EOS; @@ -1257,7 +1257,7 @@ PL_concat_text(int n, PL_chars_t **text, PL_chars_t *result) for(to=result->text.w, i=0; iencoding == ENC_WCHAR ) - { memcpy(to, text[i]->text.w, text[i]->length*sizeof(pl_wchar_t)); + { memmove(to, text[i]->text.w, text[i]->length*sizeof(pl_wchar_t)); to += text[i]->length; } else { const unsigned char *f = (const unsigned char *)text[i]->text.t; diff --git a/library/dialect/swi/os/pl-write.c b/library/dialect/swi/os/pl-write.c index 94b19503f..9c0a7e3ec 100644 --- a/library/dialect/swi/os/pl-write.c +++ b/library/dialect/swi/os/pl-write.c @@ -137,7 +137,7 @@ format_float(double f, char *buf) { *o++ = s[0]; *o++ = '.'; if ( end-s > 1 ) - { memcpy(o, s+1, end-s-1); + { memmove(o, s+1, end-s-1); o += end-s-1; } else *o++ = '0'; @@ -149,14 +149,14 @@ format_float(double f, char *buf) *o++ = '.'; for(i=0; i < -decpt; i++) *o++ = '0'; - memcpy(o, s, end-s); + memmove(o, s, end-s); o[end-s] = 0; } } else if ( end-s > decpt ) /* decimal dot inside */ - { memcpy(o, s, decpt); + { memmove(o, s, decpt); o += decpt; *o++ = '.'; - memcpy(o, s+decpt, end-s-decpt); + memmove(o, s+decpt, end-s-decpt); o[end-s-decpt] = 0; } else /* decimal dot after */ { int i; @@ -167,13 +167,13 @@ format_float(double f, char *buf) *o++ = '.'; if ( end-s > 1 ) { trailing += (int)(end-s)-1; - memcpy(o, s+1, end-s-1); + memmove(o, s+1, end-s-1); o += end-s-1; } else *o++ = '0'; sprintf(o, "e+%d", trailing); } else /* within precision trail with .0 */ - { memcpy(o, s, end-s); + { memmove(o, s, end-s); o += end-s; for(i=(int)(end-s); issize + len); /* this many unexpected additions */ assert(p->ssize >= p->slen + len); - (void)memcpy((char *)(p->strip + p->slen), (char *)(p->strip + start), + (void)memmove((char *)(p->strip + p->slen), (char *)(p->strip + start), (size_t)len * sizeof(sop)); p->slen += len; return (ret); diff --git a/library/regex/regexec.c b/library/regex/regexec.c index c4499d2ce..6796be90a 100644 --- a/library/regex/regexec.c +++ b/library/regex/regexec.c @@ -130,7 +130,7 @@ static int nope = 0; /* for use in asserts; shuts lint up */ #define SET0(v, n) ((v)[n] = 0) #define SET1(v, n) ((v)[n] = 1) #define ISSET(v, n) ((v)[n]) -#define ASSIGN(d, s) memcpy(d, s, m->g->nstates) +#define ASSIGN(d, s) memmove(d, s, m->g->nstates) #define EQ(a, b) (memcmp(a, b, m->g->nstates) == 0) #define STATEVARS \ long vn; \ diff --git a/library/rltree/range_list.c b/library/rltree/range_list.c index b7cd3aa53..05a3778f5 100644 --- a/library/rltree/range_list.c +++ b/library/rltree/range_list.c @@ -153,8 +153,8 @@ RL_Tree *copy_rl(RL_Tree *tree) { free(new); return NULL; } - memcpy(new, tree, sizeof(RL_Tree)); - memcpy(buf_ptr, &tree->root[0], tree->size * NODE_SIZE); + memmove(new, tree, sizeof(RL_Tree)); + memmove(buf_ptr, &tree->root[0], tree->size * NODE_SIZE); new->root = buf_ptr; new->mem_alloc = tree->size *NODE_SIZE; return new; diff --git a/library/system/crypto/md5.c b/library/system/crypto/md5.c index 8fdc60072..9dc80d7d6 100644 --- a/library/system/crypto/md5.c +++ b/library/system/crypto/md5.c @@ -167,7 +167,7 @@ md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/) X = (const md5_word_t *)data; } else { /* not aligned */ - memcpy(xbuf, data, 64); + memmove(xbuf, data, 64); X = xbuf; } } @@ -353,7 +353,7 @@ md5_append(md5_state_t *pms, const md5_byte_t *data, unsigned int nbytes) if (offset) { unsigned int copy = (offset + nbytes > 64 ? 64 - offset : nbytes); - memcpy(pms->buf + offset, p, copy); + memmove(pms->buf + offset, p, copy); if (offset + copy < 64) return; p += copy; @@ -367,7 +367,7 @@ md5_append(md5_state_t *pms, const md5_byte_t *data, unsigned int nbytes) /* Process a final partial block. */ if (left) - memcpy(pms->buf, p, left); + memmove(pms->buf, p, left); } void diff --git a/library/tries/base_itries.h b/library/tries/base_itries.h index 11a08eef9..96a90fd77 100644 --- a/library/tries/base_itries.h +++ b/library/tries/base_itries.h @@ -114,7 +114,7 @@ typedef struct itrie_data { YAP_Int i, new_num_buckets = DEPTH + BASE_TR_DATA_BUCKETS; \ bucket = TrEntry_buckets(TR_ENTRY); \ new_itrie_buckets(TR_ENTRY, new_num_buckets); \ - memcpy(TrEntry_buckets(TR_ENTRY), bucket, \ + memmove(TrEntry_buckets(TR_ENTRY), bucket, \ TrEntry_num_buckets(TR_ENTRY) * SIZEOF_TR_DATA_BUCKET); \ free_itrie_buckets(bucket, TrEntry_num_buckets(TR_ENTRY)); \ bucket = TrEntry_buckets(TR_ENTRY); \ diff --git a/library/tries/core_tries.c b/library/tries/core_tries.c index f66380be2..c42602059 100644 --- a/library/tries/core_tries.c +++ b/library/tries/core_tries.c @@ -1468,12 +1468,12 @@ void traverse_and_print(TrNode node, int *arity, char *str, int str_index, int m hash = (TrHash) node; first_bucket = TrHash_buckets(hash); bucket = first_bucket + TrHash_num_buckets(hash); - memcpy(current_arity, arity, sizeof(int) * (arity[0] + 1)); + memmove(current_arity, arity, sizeof(int) * (arity[0] + 1)); do { if (*--bucket) { node = *bucket; traverse_and_print(node, arity, str, str_index, mode); - memcpy(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); + memmove(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); if (mode != TRIE_PRINT_FLOAT2 && arity[arity[0]] < 0) { /* restore possible PairEndEmptyTag/PairEndTermTag/CommaEndTag side-effect */ if (str_index > 0 && str[str_index - 1] != '[') @@ -1490,9 +1490,9 @@ void traverse_and_print(TrNode node, int *arity, char *str, int str_index, int m if (TrNode_next(node)) { int *current_arity = (int *) malloc(sizeof(int) * (arity[0] + 1)); - memcpy(current_arity, arity, sizeof(int) * (arity[0] + 1)); + memmove(current_arity, arity, sizeof(int) * (arity[0] + 1)); traverse_and_print(TrNode_next(node), arity, str, str_index, mode); - memcpy(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); + memmove(arity, current_arity, sizeof(int) * (current_arity[0] + 1)); if (mode != TRIE_PRINT_FLOAT2 && arity[arity[0]] < 0) { /* restore possible PairEndEmptyTag/PairEndTermTag/CommaEndTag side-effect */ if (str_index > 0 && str[str_index - 1] != '[') diff --git a/library/tries/core_tries.h b/library/tries/core_tries.h index cced2cb4a..4bfaf47f8 100644 --- a/library/tries/core_tries.h +++ b/library/tries/core_tries.h @@ -221,7 +221,7 @@ typedef struct trie_hash { { YAP_Term *aux_stack; \ YAP_Int aux_size = CURRENT_AUXILIARY_TERM_STACK_SIZE * sizeof(YAP_Term); \ new_struct(aux_stack, YAP_Term, aux_size * 2); \ - memcpy(aux_stack, AUXILIARY_TERM_STACK, aux_size); \ + memmove(aux_stack, AUXILIARY_TERM_STACK, aux_size); \ free_struct(AUXILIARY_TERM_STACK); \ AUXILIARY_TERM_STACK = aux_stack; \ CURRENT_AUXILIARY_TERM_STACK_SIZE *= 2; \ diff --git a/os/alias.c b/os/alias.c index 2a92e652f..430e1108b 100644 --- a/os/alias.c +++ b/os/alias.c @@ -209,7 +209,7 @@ ExtendAliasArray(void) UInt new_size = GLOBAL_SzOfFileAliases+ALIASES_BLOCK_SIZE; new = (AliasDesc)Yap_AllocCodeSpace(sizeof(AliasDesc *)*new_size); - memcpy((void *)new, (void *)GLOBAL_FileAliases, sizeof(AliasDesc *)*GLOBAL_SzOfFileAliases); + memmove((void *)new, (void *)GLOBAL_FileAliases, sizeof(AliasDesc *)*GLOBAL_SzOfFileAliases); Yap_FreeCodeSpace((ADDR) GLOBAL_FileAliases); GLOBAL_FileAliases = new; GLOBAL_SzOfFileAliases = new_size; diff --git a/os/assets.c b/os/assets.c index 8243d4ae3..26a5c6f04 100644 --- a/os/assets.c +++ b/os/assets.c @@ -98,7 +98,7 @@ open_asset(VFS_t *me, const char *fname, const char *io_mode, int sno) { if ((buf = AAsset_getBuffer(am))) { // copy to memory char *bf = malloc(sz); - memcpy(bf, buf, sz); + memmove(bf, buf, sz); bool rc = Yap_set_stream_to_buf(st, bf, sz); if (rc) AAsset_close(am); st->vfs = NULL; @@ -162,10 +162,10 @@ static bool stat_a(VFS_t *me, const char *fname, vfs_stat *out) { out->st_dev = bf.st_dev; out->st_uid = bf.st_uid; out->st_gid = bf.st_gid; - memcpy(&out->st_atimespec, (const void *) &bf.st_atim, sizeof(struct timespec)); - memcpy(&out->st_mtimespec, (const void *) &bf.st_mtim, sizeof(struct timespec)); - memcpy(&out->st_ctimespec, (const void *) &bf.st_ctim, sizeof(struct timespec)); - memcpy(&out->st_birthtimespec, (const void *) &bf.st_ctim, + memmove(&out->st_atimespec, (const void *) &bf.st_atim, sizeof(struct timespec)); + memmove(&out->st_mtimespec, (const void *) &bf.st_mtim, sizeof(struct timespec)); + memmove(&out->st_ctimespec, (const void *) &bf.st_ctim, sizeof(struct timespec)); + memmove(&out->st_birthtimespec, (const void *) &bf.st_ctim, sizeof(struct timespec)); } AAsset *a = AAssetManager_open(Yap_assetManager(), fname, AASSET_MODE_UNKNOWN); diff --git a/os/files.c b/os/files.c index 9a37819a9..b7e9e5ca5 100644 --- a/os/files.c +++ b/os/files.c @@ -98,7 +98,7 @@ static Int file_name_extension(USES_REGS1) { ext = ""; } base = Malloc(lenb_b + 1); - memcpy(base, f, lenb_b); + memmove(base, f, lenb_b); base[lenb_b] = '\0'; if (IsVarTerm(t1 = Deref(ARG1))) { // should always succeed diff --git a/os/fmemopen-android.c b/os/fmemopen-android.c index 8d698898e..e3d349b9e 100644 --- a/os/fmemopen-android.c +++ b/os/fmemopen-android.c @@ -96,7 +96,7 @@ fmemread(void *cookie, char *buf, int n) return 0; if (n >= c->eof - c->pos) n = c->eof - c->pos; - memcpy (buf, c->buf + c->pos, n); + memmove (buf, c->buf + c->pos, n); c->pos += n; return n; } @@ -144,7 +144,7 @@ fmemwrite(void *cookie, const char *buf, int n) } c->pos += n; if (n - adjust) - memcpy (c->buf + c->pos - n, buf, n - adjust); + memmove (c->buf + c->pos - n, buf, n - adjust); else { return EOF; diff --git a/os/fmemopen.c b/os/fmemopen.c index e8f061f94..3e25c9d3f 100644 --- a/os/fmemopen.c +++ b/os/fmemopen.c @@ -45,7 +45,7 @@ static int readfn(void *handler, char *buf, int size) { if (size > available) { size = available; } - memcpy(buf, mem->buffer + mem->pos, sizeof(char) * size); + memmove(buf, mem->buffer + mem->pos, sizeof(char) * size); mem->pos += size; return size; @@ -58,7 +58,7 @@ static int writefn(void *handler, const char *buf, int size) { if (size > available) { size = available; } - memcpy(mem->buffer + mem->pos, buf, sizeof(char) * size); + memmove(mem->buffer + mem->pos, buf, sizeof(char) * size); mem->pos += size; return size; diff --git a/os/iopreds.c b/os/iopreds.c index a36d2d6aa..0a860672a 100644 --- a/os/iopreds.c +++ b/os/iopreds.c @@ -1130,7 +1130,9 @@ bool Yap_initStream(int sno, FILE *fd, const char *name, const char *io_mode, Term file_name, encoding_t encoding, stream_flags_t flags, void *vfs) { StreamDesc *st = &GLOBAL_Stream[sno]; - __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "init %s %s stream <%d>",io_mode,name, + __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "init %s %s:%s stream <%d>", + io_mode, CurrentModule == 0? "prolog": RepAtom(AtomOfTerm(CurrentModule))->StrOfAE, + name, sno); if (io_mode == NULL) Yap_Error(PERMISSION_ERROR_NEW_ALIAS_FOR_STREAM, MkIntegerTerm(sno), diff --git a/os/iopreds.h b/os/iopreds.h index 94ab7a6f0..3980a2efb 100644 --- a/os/iopreds.h +++ b/os/iopreds.h @@ -124,7 +124,6 @@ extern bool Yap_PrintWarning(Term twarning); extern void Yap_plwrite(Term, struct stream_desc *, int, int, int); extern void Yap_WriteAtom(struct stream_desc *s, Atom atom); extern bool Yap_WriteTerm(int output_stream, Term t, Term opts USES_REGS); - extern Term Yap_scan_num(struct stream_desc *, bool); extern void Yap_DefaultStreamOps(StreamDesc *st); diff --git a/os/open_memstream.c b/os/open_memstream.c index 3c32efc74..d8b3928c1 100644 --- a/os/open_memstream.c +++ b/os/open_memstream.c @@ -85,7 +85,7 @@ mem_write (void *c, const char *buf, int n) intermediate bytges are NUL. */ if (cookie->eof < cookie->pos) memset (cbuf + cookie->eof, '\0', cookie->pos - cookie->eof); - memcpy (cbuf + cookie->pos, buf, n); + memmove (cbuf + cookie->pos, buf, n); cookie->pos += n; /* If the user has previously written beyond the current position, remember what the trailing NUL is overwriting. Otherwise, diff --git a/os/ypsocks.c b/os/ypsocks.c index f49ac7169..b085eb8c6 100755 --- a/os/ypsocks.c +++ b/os/ypsocks.c @@ -202,7 +202,7 @@ void Yap_init_socks(char *host, long interface_port) { soadr.sin_port = htons((short)interface_port); if (he != NULL) { - memcpy((char *)&adr, (char *)he->h_addr_list[0], (size_t)he->h_length); + memmove((char *)&adr, (char *)he->h_addr_list[0], (size_t)he->h_length); } else { adr.s_addr = inet_addr(host); } @@ -635,7 +635,7 @@ static Int p_socket_bind(USES_REGS1) { #endif return (FALSE); } - memcpy((void *)&saddr.sin_addr, (void *)he->h_addr_list[0], he->h_length); + memmove((void *)&saddr.sin_addr, (void *)he->h_addr_list[0], he->h_length); } if (IsVarTerm(tport)) { port = 0; @@ -774,7 +774,7 @@ static Int p_socket_connect(USES_REGS1) { #endif return (FALSE); } - memcpy((void *)&saddr.sin_addr, (void *)he->h_addr_list[0], he->h_length); + memmove((void *)&saddr.sin_addr, (void *)he->h_addr_list[0], he->h_length); } if (IsVarTerm(tport)) { Yap_Error(INSTANTIATION_ERROR, tport, "socket_connect/3"); @@ -1239,7 +1239,7 @@ static Int p_hostname_address(USES_REGS1) { #endif return false; } - memcpy((char *)&adr, (char *)he->h_addr_list[0], (size_t)he->h_length); + memmove((char *)&adr, (char *)he->h_addr_list[0], (size_t)he->h_length); out = MkAtomTerm(Yap_LookupAtom(inet_ntoa(adr))); return (Yap_unify(out, ARG2)); } diff --git a/packages/cuda/bpredscpu.cpp b/packages/cuda/bpredscpu.cpp index a0d3309d9..50123715c 100644 --- a/packages/cuda/bpredscpu.cpp +++ b/packages/cuda/bpredscpu.cpp @@ -80,7 +80,7 @@ int bpredscpu(int *dop1, int rows, int *bin, int3 numpreds, int **ret) ptr = fres; for(x = 0; x < NUM_T; x++) { - memcpy(ptr, vec[x].data(), ini[x] * sizeof(int)); + memmove(ptr, vec[x].data(), ini[x] * sizeof(int)); ptr += ini[x]; } *ret = fres; diff --git a/packages/cuda/cuda.c b/packages/cuda/cuda.c index 0748e75b7..8aa1f83bc 100644 --- a/packages/cuda/cuda.c +++ b/packages/cuda/cuda.c @@ -376,12 +376,12 @@ load_rule( void ) { pred->is_fact = FALSE; x = (strlen(strname) + 1) * sizeof(char); pred->predname = (char *)malloc(x); - memcpy(pred->predname, strname, x); + memmove(pred->predname, strname, x); nvec = (int32_t *)malloc(sizeof(int32_t)*(ptr-vec)); - memcpy(nvec, vec, sizeof(int32_t)*(ptr-vec)); + memmove(nvec, vec, sizeof(int32_t)*(ptr-vec)); pred->address_host_table = nvec; pred->negatives = (int32_t *)malloc(sizeof(int32_t) * cont); - memcpy(pred->negatives, neg, sizeof(int32_t) * cont); + memmove(pred->negatives, neg, sizeof(int32_t) * cont); Cuda_NewRule( pred ); return YAP_Unify(YAP_ARG4, YAP_MkIntTerm((YAP_Int)pred)); } diff --git a/packages/cuda/dbio.cu b/packages/cuda/dbio.cu index 14e88a747..06b3c1ae4 100644 --- a/packages/cuda/dbio.cu +++ b/packages/cuda/dbio.cu @@ -180,7 +180,7 @@ void postgresRead(PGconn **ret, vector *L, int *inpquery, char *names, { numt = (strlen(tok) + 1) * sizeof(char); qrs[x] = (char *)malloc(numt); - memcpy(qrs[x], tok, numt); + memmove(qrs[x], tok, numt); } x += 2; } @@ -264,7 +264,7 @@ void postgresRead(PGconn **ret, vector *L, int *inpquery, char *names, L->at(z).address_host_table = mat; numc = (strlen(tok) + 1) * sizeof(char); L->at(z).predname = (char *)malloc(numc); - memcpy(L->at(z).predname, tok, numc); + memmove(L->at(z).predname, tok, numc); PQclear(pgr); tok = strtok(NULL, " "); z++; diff --git a/packages/cuda/joincpu.cpp b/packages/cuda/joincpu.cpp index ead42edb5..42658fc51 100644 --- a/packages/cuda/joincpu.cpp +++ b/packages/cuda/joincpu.cpp @@ -466,7 +466,7 @@ int joincpu(int *p1, int *p2, int rLen, int sLen, int of1, int of2, listrule_names[x+1] - rules->rule_names[x]; if(rules->address_host_table[rules->rule_names[x]] > 0) { - memcpy(rest + cont, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); + memmove(rest + cont, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); cont += subs; } else @@ -123,17 +123,17 @@ void movebpreds(InputIterator rules, InputIterator end) subs--; if(rules->address_host_table[pos] > 0 && rules->address_host_table[pos+1] > 0) { - memcpy(move2 + cont3, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); + memmove(move2 + cont3, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); cont3 += subs; } else { - memcpy(move + cont2, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); + memmove(move + cont2, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); cont2 += subs; } } } - memcpy(rules->address_host_table, rest, cont * sizeof(int)); + memmove(rules->address_host_table, rest, cont * sizeof(int)); pos = 1; for(x = 1; x <= total; x++) @@ -178,7 +178,7 @@ void movebpreds(InputIterator rules, InputIterator end) pos += 2; cont = closestpred(rules->rule_names, rules->num_rows, p1); - memcpy(rules->preds[cont] + rules->numpreds[cont].x, move + cont2, total); + memmove(rules->preds[cont] + rules->numpreds[cont].x, move + cont2, total); rules->numpreds[cont].x += 3; cont2 += 3; } @@ -212,19 +212,19 @@ void movebpreds(InputIterator rules, InputIterator end) cont2 = closestpred(rules->rule_names, rules->num_rows, p2); if(cont == cont2) { - memcpy(rules->preds[cont] + rules->numpreds[cont].x, move2 + cont3, total); + memmove(rules->preds[cont] + rules->numpreds[cont].x, move2 + cont3, total); rules->numpreds[cont].x += 3; } else { if(cont > cont2) { - memcpy(rules->preds[cont] + rules->numpreds[cont].x + rules->numpreds[cont].y, move2 + cont3, total); + memmove(rules->preds[cont] + rules->numpreds[cont].x + rules->numpreds[cont].y, move2 + cont3, total); rules->numpreds[cont].y += 3; } else { - memcpy(rules->preds[cont2] + rules->numpreds[cont2].x + rules->numpreds[cont2].y, move2 + cont3, total); + memmove(rules->preds[cont2] + rules->numpreds[cont2].x + rules->numpreds[cont2].y, move2 + cont3, total); rules->numpreds[cont2].y += 3; } } @@ -345,7 +345,7 @@ void seleccion(InputIterator actual, InputIterator end) sl = x - 1; tam = cont * sizeof(int); actual->select[sl] = (int *)malloc(tam); - memcpy(actual->select[sl], pv, tam); + memmove(actual->select[sl], pv, tam); actual->numsel[sl] = cont; } actual++; @@ -480,9 +480,9 @@ int2 columnsproject(int *first, int tam, int *rule, int ini, int fin, int sini, temp = ret.y * sizeof(int); free(*newrule); *newrule = (int *)malloc(temp); - memcpy(*newrule, pv, temp); + memmove(*newrule, pv, temp); *res = (int *)malloc(temp); - memcpy(*res, pv2, temp); + memmove(*res, pv2, temp); return ret; } @@ -509,7 +509,7 @@ int wherejoin(int *tmprule, int tmplen, int *rule, int tam2, int **res) temp = cont * sizeof(int); *res = (int *)malloc(temp); - memcpy(*res, joins, temp); + memmove(*res, joins, temp); return cont; } @@ -611,7 +611,7 @@ void proyeccion(InputIterator actual, InputIterator end) temp = pos.x * sizeof(int); actual->project[0] = (int *)malloc(temp); - memcpy(actual->project[0], fjoin, temp); + memmove(actual->project[0], fjoin, temp); pos.y = pos.x; actual->projpos[0] = pos; actual++; @@ -628,7 +628,7 @@ void proyeccion(InputIterator actual, InputIterator end) pos.y = actual->rule_names[2] - actual->rule_names[1] - 2; temp = pos.y * sizeof(int); pv = (int *)malloc(temp); - memcpy(pv, actual->address_host_table + actual->rule_names[1] + 1, temp); + memmove(pv, actual->address_host_table + actual->rule_names[1] + 1, temp); for(x = 2, y = 0; x <= numjoins; x++, y++) { @@ -676,7 +676,7 @@ void proyeccion(InputIterator actual, InputIterator end) } temp = pos.x * sizeof(int); actual->project[numjoins] = (int *)malloc(temp); - memcpy(actual->project[numjoins], fjoin, temp); + memmove(actual->project[numjoins], fjoin, temp); pos.y = pos.x; actual->projpos[numjoins] = pos; actual++; @@ -701,7 +701,7 @@ void selfjoin(InputIterator actual, InputIterator end) if(actual->address_host_table[pos] < 0) continue; tam = actual->rule_names[x+1] - actual->rule_names[x] - 2; - memcpy(rulecpy, actual->address_host_table + pos + 1, tam * sizeof(int)); + memmove(rulecpy, actual->address_host_table + pos + 1, tam * sizeof(int)); cont = 0; for(y = 0; y < tam; y++) { @@ -735,7 +735,7 @@ void selfjoin(InputIterator actual, InputIterator end) temp = x - 1; tam = cont * sizeof(int); actual->selfjoin[temp] = (int *)malloc(tam); - memcpy(actual->selfjoin[temp], fjoin, tam); + memmove(actual->selfjoin[temp], fjoin, tam); actual->numselfj[temp] = cont; } actual++; @@ -772,7 +772,7 @@ void consulta(int *query, int qsize, int qname, rulenode *res) size = cont1 * sizeof(int); res->select = (int **)malloc(sizeof(int *)); res->select[0] = (int *)malloc(size); - memcpy(res->select[0], sel, size); + memmove(res->select[0], sel, size); cont1 = 0; } if(cont2 > 0) @@ -780,7 +780,7 @@ void consulta(int *query, int qsize, int qname, rulenode *res) size = cont2 * sizeof(int); res->project = (int **)malloc(sizeof(int *)); res->project[0] = (int *)malloc(size); - memcpy(res->project[0], pro, size); + memmove(res->project[0], pro, size); } for(x = 0; x < qsize; x++) { @@ -817,7 +817,7 @@ void consulta(int *query, int qsize, int qname, rulenode *res) size = cont1 * sizeof(int); res->selfjoin = (int **)malloc(sizeof(int *)); res->selfjoin[0] = (int *)malloc(size); - memcpy(res->selfjoin[0], sel, size); + memmove(res->selfjoin[0], sel, size); } } diff --git a/packages/cuda/memory.cu b/packages/cuda/memory.cu index e57ca39b3..168a1e6a3 100644 --- a/packages/cuda/memory.cu +++ b/packages/cuda/memory.cu @@ -346,7 +346,7 @@ int cargarcpu(int name, int num_rows, int num_columns, int is_fact, int *address } for(; x < numcpu; x++) { - memcpy(temp + inc, temp_storage[x].dev_address, temp_storage[x].size); + memmove(temp + inc, temp_storage[x].dev_address, temp_storage[x].size); inc += temp_storage[x].size / sizeof(int); free(temp_storage[x].dev_address); } diff --git a/packages/cuda/old/cuda.c b/packages/cuda/old/cuda.c index 0748e75b7..8aa1f83bc 100755 --- a/packages/cuda/old/cuda.c +++ b/packages/cuda/old/cuda.c @@ -376,12 +376,12 @@ load_rule( void ) { pred->is_fact = FALSE; x = (strlen(strname) + 1) * sizeof(char); pred->predname = (char *)malloc(x); - memcpy(pred->predname, strname, x); + memmove(pred->predname, strname, x); nvec = (int32_t *)malloc(sizeof(int32_t)*(ptr-vec)); - memcpy(nvec, vec, sizeof(int32_t)*(ptr-vec)); + memmove(nvec, vec, sizeof(int32_t)*(ptr-vec)); pred->address_host_table = nvec; pred->negatives = (int32_t *)malloc(sizeof(int32_t) * cont); - memcpy(pred->negatives, neg, sizeof(int32_t) * cont); + memmove(pred->negatives, neg, sizeof(int32_t) * cont); Cuda_NewRule( pred ); return YAP_Unify(YAP_ARG4, YAP_MkIntTerm((YAP_Int)pred)); } diff --git a/packages/cuda/old/dbio.cu b/packages/cuda/old/dbio.cu index 6b0fe78b4..f68b2f711 100644 --- a/packages/cuda/old/dbio.cu +++ b/packages/cuda/old/dbio.cu @@ -180,7 +180,7 @@ void postgresRead(PGconn **ret, vector *L, int *inpquery, char *names, { numt = (strlen(tok) + 1) * sizeof(char); qrs[x] = (char *)malloc(numt); - memcpy(qrs[x], tok, numt); + memmove(qrs[x], tok, numt); } x += 2; } @@ -264,7 +264,7 @@ void postgresRead(PGconn **ret, vector *L, int *inpquery, char *names, L->at(z).address_host_table = mat; numc = (strlen(tok) + 1) * sizeof(char); L->at(z).predname = (char *)malloc(numc); - memcpy(L->at(z).predname, tok, numc); + memmove(L->at(z).predname, tok, numc); PQclear(pgr); tok = strtok(NULL, " "); z++; diff --git a/packages/cuda/old/lista.cu b/packages/cuda/old/lista.cu index f4d7cbb48..d203da469 100755 --- a/packages/cuda/old/lista.cu +++ b/packages/cuda/old/lista.cu @@ -114,7 +114,7 @@ void movebpreds(InputIterator rules, InputIterator end) subs = rules->rule_names[x+1] - rules->rule_names[x]; if(rules->address_host_table[rules->rule_names[x]] > 0) { - memcpy(rest + cont, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); + memmove(rest + cont, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); cont += subs; } else @@ -123,17 +123,17 @@ void movebpreds(InputIterator rules, InputIterator end) subs--; if(rules->address_host_table[pos] > 0 && rules->address_host_table[pos+1] > 0) { - memcpy(move2 + cont3, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); + memmove(move2 + cont3, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); cont3 += subs; } else { - memcpy(move + cont2, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); + memmove(move + cont2, rules->address_host_table + rules->rule_names[x], subs * sizeof(int)); cont2 += subs; } } } - memcpy(rules->address_host_table, rest, cont * sizeof(int)); + memmove(rules->address_host_table, rest, cont * sizeof(int)); pos = 1; for(x = 1; x <= total; x++) @@ -178,7 +178,7 @@ void movebpreds(InputIterator rules, InputIterator end) pos += 2; cont = closestpred(rules->rule_names, rules->num_rows, p1); - memcpy(rules->preds[cont] + rules->numpreds[cont].x, move + cont2, total); + memmove(rules->preds[cont] + rules->numpreds[cont].x, move + cont2, total); rules->numpreds[cont].x += 3; cont2 += 3; } @@ -212,19 +212,19 @@ void movebpreds(InputIterator rules, InputIterator end) cont2 = closestpred(rules->rule_names, rules->num_rows, p2); if(cont == cont2) { - memcpy(rules->preds[cont] + rules->numpreds[cont].x, move2 + cont3, total); + memmove(rules->preds[cont] + rules->numpreds[cont].x, move2 + cont3, total); rules->numpreds[cont].x += 3; } else { if(cont > cont2) { - memcpy(rules->preds[cont] + rules->numpreds[cont].x + rules->numpreds[cont].y, move2 + cont3, total); + memmove(rules->preds[cont] + rules->numpreds[cont].x + rules->numpreds[cont].y, move2 + cont3, total); rules->numpreds[cont].y += 3; } else { - memcpy(rules->preds[cont2] + rules->numpreds[cont2].x + rules->numpreds[cont2].y, move2 + cont3, total); + memmove(rules->preds[cont2] + rules->numpreds[cont2].x + rules->numpreds[cont2].y, move2 + cont3, total); rules->numpreds[cont2].y += 3; } } @@ -345,7 +345,7 @@ void seleccion(InputIterator actual, InputIterator end) sl = x - 1; tam = cont * sizeof(int); actual->select[sl] = (int *)malloc(tam); - memcpy(actual->select[sl], pv, tam); + memmove(actual->select[sl], pv, tam); actual->numsel[sl] = cont; } actual++; @@ -480,9 +480,9 @@ int2 columnsproject(int *first, int tam, int *rule, int ini, int fin, int sini, temp = ret.y * sizeof(int); free(*newrule); *newrule = (int *)malloc(temp); - memcpy(*newrule, pv, temp); + memmove(*newrule, pv, temp); *res = (int *)malloc(temp); - memcpy(*res, pv2, temp); + memmove(*res, pv2, temp); return ret; } @@ -509,7 +509,7 @@ int wherejoin(int *tmprule, int tmplen, int *rule, int tam2, int **res) temp = cont * sizeof(int); *res = (int *)malloc(temp); - memcpy(*res, joins, temp); + memmove(*res, joins, temp); return cont; } @@ -611,7 +611,7 @@ void proyeccion(InputIterator actual, InputIterator end) temp = pos.x * sizeof(int); actual->project[0] = (int *)malloc(temp); - memcpy(actual->project[0], fjoin, temp); + memmove(actual->project[0], fjoin, temp); pos.y = pos.x; actual->projpos[0] = pos; actual++; @@ -628,7 +628,7 @@ void proyeccion(InputIterator actual, InputIterator end) pos.y = actual->rule_names[2] - actual->rule_names[1] - 2; temp = pos.y * sizeof(int); pv = (int *)malloc(temp); - memcpy(pv, actual->address_host_table + actual->rule_names[1] + 1, temp); + memmove(pv, actual->address_host_table + actual->rule_names[1] + 1, temp); for(x = 2, y = 0; x <= numjoins; x++, y++) { @@ -676,7 +676,7 @@ void proyeccion(InputIterator actual, InputIterator end) } temp = pos.x * sizeof(int); actual->project[numjoins] = (int *)malloc(temp); - memcpy(actual->project[numjoins], fjoin, temp); + memmove(actual->project[numjoins], fjoin, temp); pos.y = pos.x; actual->projpos[numjoins] = pos; actual++; @@ -701,7 +701,7 @@ void selfjoin(InputIterator actual, InputIterator end) if(actual->address_host_table[pos] < 0) continue; tam = actual->rule_names[x+1] - actual->rule_names[x] - 2; - memcpy(rulecpy, actual->address_host_table + pos + 1, tam * sizeof(int)); + memmove(rulecpy, actual->address_host_table + pos + 1, tam * sizeof(int)); cont = 0; for(y = 0; y < tam; y++) { @@ -735,7 +735,7 @@ void selfjoin(InputIterator actual, InputIterator end) temp = x - 1; tam = cont * sizeof(int); actual->selfjoin[temp] = (int *)malloc(tam); - memcpy(actual->selfjoin[temp], fjoin, tam); + memmove(actual->selfjoin[temp], fjoin, tam); actual->numselfj[temp] = cont; } actual++; @@ -772,7 +772,7 @@ void consulta(int *query, int qsize, int qname, rulenode *res) size = cont1 * sizeof(int); res->select = (int **)malloc(sizeof(int *)); res->select[0] = (int *)malloc(size); - memcpy(res->select[0], sel, size); + memmove(res->select[0], sel, size); cont1 = 0; } if(cont2 > 0) @@ -780,7 +780,7 @@ void consulta(int *query, int qsize, int qname, rulenode *res) size = cont2 * sizeof(int); res->project = (int **)malloc(sizeof(int *)); res->project[0] = (int *)malloc(size); - memcpy(res->project[0], pro, size); + memmove(res->project[0], pro, size); } for(x = 0; x < qsize; x++) { @@ -817,7 +817,7 @@ void consulta(int *query, int qsize, int qname, rulenode *res) size = cont1 * sizeof(int); res->selfjoin = (int **)malloc(sizeof(int *)); res->selfjoin[0] = (int *)malloc(size); - memcpy(res->selfjoin[0], sel, size); + memmove(res->selfjoin[0], sel, size); } } diff --git a/packages/cuda/old/memory.cu b/packages/cuda/old/memory.cu index 70036e07b..7e0404f79 100755 --- a/packages/cuda/old/memory.cu +++ b/packages/cuda/old/memory.cu @@ -346,7 +346,7 @@ int cargarcpu(int name, int num_rows, int num_columns, int is_fact, int *address } for(; x < numcpu; x++) { - memcpy(temp + inc, temp_storage[x].dev_address, temp_storage[x].size); + memmove(temp + inc, temp_storage[x].dev_address, temp_storage[x].size); inc += temp_storage[x].size / sizeof(int); free(temp_storage[x].dev_address); } diff --git a/packages/cuda/selectproyectcpu.cpp b/packages/cuda/selectproyectcpu.cpp index 5ae091e13..876674766 100644 --- a/packages/cuda/selectproyectcpu.cpp +++ b/packages/cuda/selectproyectcpu.cpp @@ -117,7 +117,7 @@ int selectproyectcpu(int *dop1, int rows, int cols, int head_size, int *select, ptr = fres; for(x = 0; x < NUM_T; x++) { - memcpy(ptr, vec[x].data(), ini[x] * sizeof(int)); + memmove(ptr, vec[x].data(), ini[x] * sizeof(int)); ptr += ini[x]; } *ret = fres; @@ -237,7 +237,7 @@ int selectproyectcpu2(int *dop1, int rows, int cols, int *select, int numselect, ptr = lres; for(x = 0; x < NUM_T; x++) { - memcpy(ptr, lis[x], cont[x] * sizeof(int)); + memmove(ptr, lis[x], cont[x] * sizeof(int)); ptr += cont[x]; } if(list != NULL) @@ -246,7 +246,7 @@ int selectproyectcpu2(int *dop1, int rows, int cols, int *select, int numselect, ptr = fres; for(x = 0; x < NUM_T; x++) { - memcpy(ptr, vec[x], cont[x] * sizeof(int)); + memmove(ptr, vec[x], cont[x] * sizeof(int)); ptr += cont[x]; } *ret = fres; @@ -373,7 +373,7 @@ int selectproyectcpu3(int *dop1, int rows, int cols, int *select, int numselect, ptr = lres; for(x = 0; x < NUM_T; x++) { - memcpy(ptr, lis[x].data(), ini[x] * sizeof(int)); + memmove(ptr, lis[x].data(), ini[x] * sizeof(int)); ptr += ini[x]; } if(list != NULL) @@ -382,7 +382,7 @@ int selectproyectcpu3(int *dop1, int rows, int cols, int *select, int numselect, ptr = fres; for(x = 0; x < NUM_T; x++) { - memcpy(ptr, vec[x].data(), ini[x] * sizeof(int)); + memmove(ptr, vec[x].data(), ini[x] * sizeof(int)); ptr += ini[x]; } *ret = fres; diff --git a/packages/cuda/unioncpu2.cpp b/packages/cuda/unioncpu2.cpp index 6f1e3cd81..92091be86 100644 --- a/packages/cuda/unioncpu2.cpp +++ b/packages/cuda/unioncpu2.cpp @@ -25,7 +25,7 @@ int unircpu(int *res, int rows, int tipo, int **ret) { size = nrows * tipo * sizeof(int); nres = (int *)malloc(size); - memcpy(nres, res, size); + memmove(nres, res, size); free(*ret); *ret = nres; }*/ @@ -41,7 +41,7 @@ int unircpu(int *res, int rows, int tipo, int **ret) { size = nrows * tipo * sizeof(int); nres = (int *)malloc(size); - memcpy(nres, res, size); + memmove(nres, res, size); free(*ret); *ret = nres; }*/ @@ -57,7 +57,7 @@ int unircpu(int *res, int rows, int tipo, int **ret) { size = nrows * tipo * sizeof(int); nres = (int *)malloc(size); - memcpy(nres, res, size); + memmove(nres, res, size); free(*ret); *ret = nres; }*/ diff --git a/packages/myddas/pl/myddas.ypp b/packages/myddas/pl/myddas.ypp index 356c0ba6c..991bfff14 100644 --- a/packages/myddas/pl/myddas.ypp +++ b/packages/myddas/pl/myddas.ypp @@ -168,6 +168,7 @@ :- use_module(myddas_errors,[ '$error_checks'/1 + ]). :- use_module(myddas_prolog2sql,[ diff --git a/packages/myddas/sqlite3/myddas_sqlite3.c b/packages/myddas/sqlite3/myddas_sqlite3.c index 7df12c11d..77f214ab5 100644 --- a/packages/myddas/sqlite3/myddas_sqlite3.c +++ b/packages/myddas/sqlite3/myddas_sqlite3.c @@ -595,7 +595,7 @@ static Int c_sqlite3_row(USES_REGS1) { size_t bytes = sqlite3_column_bytes(res_set->stmt, i); void *pt; tf = Yap_AllocExternalDataInStack(EXTERNAL_BLOB, bytes, &pt); - memcpy(pt, sqlite3_column_blob(res_set->stmt, i), bytes); + memmove(pt, sqlite3_column_blob(res_set->stmt, i), bytes); } break; case SQLITE_NULL: null_atom[0] = MkIntegerTerm(null_id++); diff --git a/packages/myddas/sqlite3/sqlitest.yap b/packages/myddas/sqlite3/sqlitest.yap index 532d888ef..b2c223a9a 100644 --- a/packages/myddas/sqlite3/sqlitest.yap +++ b/packages/myddas/sqlite3/sqlitest.yap @@ -71,7 +71,7 @@ go :- go_cut1. go :- - X=1, +% X=1, artists(X,Y), writeln(X:Y). @@ -82,7 +82,7 @@ go_cut0 :- go_cut1 :- - X=1, +% X=1, artists(X,Y), writeln(X:Y), !. @@ -90,4 +90,4 @@ go_cut1 :- close :- db_close. -:- main. +:- initialization(main). diff --git a/packages/myddas/sqlite3/src/sqlite3.c b/packages/myddas/sqlite3/src/sqlite3.c index 73c69efbd..8d1cc3579 100644 --- a/packages/myddas/sqlite3/src/sqlite3.c +++ b/packages/myddas/sqlite3/src/sqlite3.c @@ -12707,14 +12707,14 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*); #include /* -** Use a macro to replace memcpy() if compiled with SQLITE_INLINE_MEMCPY. -** This allows better measurements of where memcpy() is used when running -** cachegrind. But this macro version of memcpy() is very slow so it +** Use a macro to replace memmove() if compiled with SQLITE_INLINE_MEMCPY. +** This allows better measurements of where memmove() is used when running +** cachegrind. But this macro version of memmove() is very slow so it ** should not be used in production. This is a performance measurement ** hack only. */ #ifdef SQLITE_INLINE_MEMCPY -# define memcpy(D,S,N) {char*xxd=(char*)(D);const char*xxs=(const char*)(S);\ +# define memmove(D,S,N) {char*xxd=(char*)(D);const char*xxs=(const char*)(S);\ int xxn=(N);while(xxn-->0)*(xxd++)=*(xxs++);} #endif @@ -20771,7 +20771,7 @@ static void currentTimeFunc( #else sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER)); pTm = gmtime(&t); - if( pTm ) memcpy(&sNow, pTm, sizeof(sNow)); + if( pTm ) memmove(&sNow, pTm, sizeof(sNow)); sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER)); #endif if( pTm ){ @@ -21948,7 +21948,7 @@ static void *sqlite3MemMalloc(int nByte){ if( mem.nBacktrace ){ void *aAddr[40]; pHdr->nBacktrace = backtrace(aAddr, mem.nBacktrace+1)-1; - memcpy(pBt, &aAddr[1], pHdr->nBacktrace*sizeof(void*)); + memmove(pBt, &aAddr[1], pHdr->nBacktrace*sizeof(void*)); assert(pBt[0]); if( mem.xBacktrace ){ mem.xBacktrace(nByte, pHdr->nBacktrace-1, &aAddr[1]); @@ -21957,7 +21957,7 @@ static void *sqlite3MemMalloc(int nByte){ pHdr->nBacktrace = 0; } if( mem.nTitle ){ - memcpy(z, mem.zTitle, mem.nTitle); + memmove(z, mem.zTitle, mem.nTitle); } pHdr->iSize = nByte; adjustStats(nByte, +1); @@ -22024,7 +22024,7 @@ static void *sqlite3MemRealloc(void *pPrior, int nByte){ pOldHdr = sqlite3MemsysGetHeader(pPrior); pNew = sqlite3MemMalloc(nByte); if( pNew ){ - memcpy(pNew, pPrior, (int)(nByteiSize ? nByte : pOldHdr->iSize)); + memmove(pNew, pPrior, (int)(nByteiSize ? nByte : pOldHdr->iSize)); if( nByte>pOldHdr->iSize ){ randomFill(&((char*)pNew)[pOldHdr->iSize], nByte - (int)pOldHdr->iSize); } @@ -22130,7 +22130,7 @@ SQLITE_PRIVATE void sqlite3MemdebugSettitle(const char *zTitle){ unsigned int n = sqlite3Strlen30(zTitle) + 1; sqlite3_mutex_enter(mem.mutex); if( n>=sizeof(mem.zTitle) ) n = sizeof(mem.zTitle)-1; - memcpy(mem.zTitle, zTitle, n); + memmove(mem.zTitle, zTitle, n); mem.zTitle[n] = 0; mem.nTitle = ROUND8(n); sqlite3_mutex_leave(mem.mutex); @@ -22743,9 +22743,9 @@ static void *memsys3Realloc(void *pPrior, int nBytes){ p = memsys3MallocUnsafe(nBytes); if( p ){ if( nOldlookaside.sz); + memmove(pNew, p, db->lookaside.sz); sqlite3DbFree(db, p); } }else{ @@ -25748,7 +25748,7 @@ SQLITE_PRIVATE char *sqlite3DbStrDup(sqlite3 *db, const char *z){ n = strlen(z) + 1; zNew = sqlite3DbMallocRaw(db, n); if( zNew ){ - memcpy(zNew, z, n); + memmove(zNew, z, n); } return zNew; } @@ -25761,7 +25761,7 @@ SQLITE_PRIVATE char *sqlite3DbStrNDup(sqlite3 *db, const char *z, u64 n){ assert( (n&0x7fffffff)==n ); zNew = sqlite3DbMallocRawNN(db, n+1); if( zNew ){ - memcpy(zNew, z, (size_t)n); + memmove(zNew, z, (size_t)n); zNew[n] = 0; } return zNew; @@ -26352,7 +26352,7 @@ SQLITE_PRIVATE void sqlite3VXPrintf( if( exp>350 ){ bufpt = buf; buf[0] = prefix; - memcpy(buf+(prefix!=0),"Inf",4); + memmove(buf+(prefix!=0),"Inf",4); length = 3+(prefix!=0); break; } @@ -26660,7 +26660,7 @@ static int sqlite3StrAccumEnlarge(StrAccum *p, int N){ } if( zNew ){ assert( p->zText!=0 || p->nChar==0 ); - if( !isMalloced(p) && p->nChar>0 ) memcpy(zNew, p->zText, p->nChar); + if( !isMalloced(p) && p->nChar>0 ) memmove(zNew, p->zText, p->nChar); p->zText = zNew; p->nAlloc = sqlite3DbMallocSize(p->db, zNew); p->printfFlags |= SQLITE_PRINTF_MALLOCED; @@ -26695,7 +26695,7 @@ SQLITE_PRIVATE void sqlite3AppendChar(StrAccum *p, int N, char c){ static void SQLITE_NOINLINE enlargeAndAppend(StrAccum *p, const char *z, int N){ N = sqlite3StrAccumEnlarge(p, N); if( N>0 ){ - memcpy(&p->zText[p->nChar], z, N); + memmove(&p->zText[p->nChar], z, N); p->nChar += N; } } @@ -26714,7 +26714,7 @@ SQLITE_PRIVATE void sqlite3StrAccumAppend(StrAccum *p, const char *z, int N){ }else if( N ){ assert( p->zText ); p->nChar += N; - memcpy(&p->zText[p->nChar-N], z, N); + memmove(&p->zText[p->nChar-N], z, N); } } @@ -26736,7 +26736,7 @@ static SQLITE_NOINLINE char *strAccumFinishRealloc(StrAccum *p){ assert( p->mxAlloc>0 && !isMalloced(p) ); zText = sqlite3DbMallocRaw(p->db, p->nChar+1 ); if( zText ){ - memcpy(zText, p->zText, p->nChar+1); + memmove(zText, p->zText, p->nChar+1); p->printfFlags |= SQLITE_PRINTF_MALLOCED; }else{ setStrAccumError(p, STRACCUM_NOMEM); @@ -27637,14 +27637,14 @@ SQLITE_API void sqlite3_randomness(int N, void *pBuf){ */ static SQLITE_WSD struct sqlite3PrngType sqlite3SavedPrng; SQLITE_PRIVATE void sqlite3PrngSaveState(void){ - memcpy( + memmove( &GLOBAL(struct sqlite3PrngType, sqlite3SavedPrng), &GLOBAL(struct sqlite3PrngType, sqlite3Prng), sizeof(sqlite3Prng) ); } SQLITE_PRIVATE void sqlite3PrngRestoreState(void){ - memcpy( + memmove( &GLOBAL(struct sqlite3PrngType, sqlite3Prng), &GLOBAL(struct sqlite3PrngType, sqlite3SavedPrng), sizeof(sqlite3Prng) @@ -29174,7 +29174,7 @@ SQLITE_PRIVATE int sqlite3DecOrHexToI64(const char *z, i64 *pOut){ for(k=i; sqlite3Isxdigit(z[k]); k++){ u = u*16 + sqlite3HexToInt(z[k]); } - memcpy(pOut, &u, 8); + memmove(pOut, &u, 8); return (z[k]==0 && k-i<=16) ? 0 : 2; }else #endif /* SQLITE_OMIT_HEX_INTEGER */ @@ -29215,7 +29215,7 @@ SQLITE_PRIVATE int sqlite3GetInt32(const char *zNum, int *pValue){ u = u*16 + sqlite3HexToInt(zNum[i]); } if( (u&0x80000000)==0 && sqlite3Isxdigit(zNum[i])==0 ){ - memcpy(pValue, &u, 4); + memmove(pValue, &u, 4); return 1; }else{ return 0; @@ -29648,15 +29648,15 @@ SQLITE_PRIVATE int sqlite3VarintLen(u64 v){ SQLITE_PRIVATE u32 sqlite3Get4byte(const u8 *p){ #if SQLITE_BYTEORDER==4321 u32 x; - memcpy(&x,p,4); + memmove(&x,p,4); return x; #elif SQLITE_BYTEORDER==1234 && GCC_VERSION>=4003000 u32 x; - memcpy(&x,p,4); + memmove(&x,p,4); return __builtin_bswap32(x); #elif SQLITE_BYTEORDER==1234 && MSVC_VERSION>=1300 u32 x; - memcpy(&x,p,4); + memmove(&x,p,4); return _byteswap_ulong(x); #else testcase( p[0]&0x80 ); @@ -29665,13 +29665,13 @@ SQLITE_PRIVATE u32 sqlite3Get4byte(const u8 *p){ } SQLITE_PRIVATE void sqlite3Put4byte(unsigned char *p, u32 v){ #if SQLITE_BYTEORDER==4321 - memcpy(p,&v,4); + memmove(p,&v,4); #elif SQLITE_BYTEORDER==1234 && GCC_VERSION>=4003000 u32 x = __builtin_bswap32(v); - memcpy(p,&x,4); + memmove(p,&x,4); #elif SQLITE_BYTEORDER==1234 && MSVC_VERSION>=1300 u32 x = _byteswap_ulong(v); - memcpy(p,&x,4); + memmove(p,&x,4); #else p[0] = (u8)(v>>24); p[1] = (u8)(v>>16); @@ -29945,7 +29945,7 @@ SQLITE_PRIVATE LogEst sqlite3LogEstFromDouble(double x){ assert( sizeof(x)==8 && sizeof(a)==8 ); if( x<=1 ) return 0; if( x<=2000000000 ) return sqlite3LogEst((u64)x); - memcpy(&a, &x, 8); + memmove(&a, &x, 8); e = (a>>52) - 1022; return e*10; } @@ -30042,7 +30042,7 @@ SQLITE_PRIVATE VList *sqlite3VListAdd( z = (char*)&pIn[i+2]; pIn[1] = i+nInt; assert( pIn[1]<=pIn[0] ); - memcpy(z, zName, nName); + memmove(z, zName, nName); z[nName] = 0; return pIn; } @@ -31676,7 +31676,7 @@ static struct vxworksFileId *vxworksFindFileId(const char *zAbsoluteName){ pNew = sqlite3_malloc64( sizeof(*pNew) + (n+1) ); if( pNew==0 ) return 0; pNew->zCanonicalName = (char*)&pNew[1]; - memcpy(pNew->zCanonicalName, zAbsoluteName, n+1); + memmove(pNew->zCanonicalName, zAbsoluteName, n+1); n = vxworksSimplifyName(pNew->zCanonicalName, n); /* Search for an existing entry that matching the canonical name. @@ -32093,7 +32093,7 @@ static int findInodeInfo( return SQLITE_NOMEM_BKPT; } memset(pInode, 0, sizeof(*pInode)); - memcpy(&pInode->fileId, &fileId, sizeof(fileId)); + memmove(&pInode->fileId, &fileId, sizeof(fileId)); pInode->nRef = 1; pInode->pNext = inodeList; pInode->pPrev = 0; @@ -33961,14 +33961,14 @@ static int unixRead( #if SQLITE_MAX_MMAP_SIZE>0 /* Deal with as much of this read request as possible by transfering - ** data from the memory mapping using memcpy(). */ + ** data from the memory mapping using memmove(). */ if( offsetmmapSize ){ if( offset+amt <= pFile->mmapSize ){ - memcpy(pBuf, &((u8 *)(pFile->pMapRegion))[offset], amt); + memmove(pBuf, &((u8 *)(pFile->pMapRegion))[offset], amt); return SQLITE_OK; }else{ int nCopy = pFile->mmapSize - offset; - memcpy(pBuf, &((u8 *)(pFile->pMapRegion))[offset], nCopy); + memmove(pBuf, &((u8 *)(pFile->pMapRegion))[offset], nCopy); pBuf = &((u8 *)pBuf)[nCopy]; amt -= nCopy; offset += nCopy; @@ -34096,14 +34096,14 @@ static int unixWrite( #if defined(SQLITE_MMAP_READWRITE) && SQLITE_MAX_MMAP_SIZE>0 /* Deal with as much of this write request as possible by transfering - ** data from the memory mapping using memcpy(). */ + ** data from the memory mapping using memmove(). */ if( offsetmmapSize ){ if( offset+amt <= pFile->mmapSize ){ - memcpy(&((u8 *)(pFile->pMapRegion))[offset], pBuf, amt); + memmove(&((u8 *)(pFile->pMapRegion))[offset], pBuf, amt); return SQLITE_OK; }else{ int nCopy = pFile->mmapSize - offset; - memcpy(&((u8 *)(pFile->pMapRegion))[offset], pBuf, nCopy); + memmove(&((u8 *)(pFile->pMapRegion))[offset], pBuf, nCopy); pBuf = &((u8 *)pBuf)[nCopy]; amt -= nCopy; offset += nCopy; @@ -36471,7 +36471,7 @@ static int findCreateFileMode( if( nDb==0 || zPath[nDb]=='.' ) return SQLITE_OK; nDb--; } - memcpy(zDb, zPath, nDb); + memmove(zDb, zPath, nDb); zDb[nDb] = '\0'; rc = getFileMode(zDb, pMode, pUid, pGid); @@ -36944,7 +36944,7 @@ static int unixFullPathname( rc = SQLITE_CANTOPEN_BKPT; }else{ memmove(&zDel[n], zDel, nByte+1); - memcpy(zDel, zIn, n); + memmove(zDel, zIn, n); nByte += n; } } @@ -37059,8 +37059,8 @@ static int unixRandomness(sqlite3_vfs *NotUsed, int nBuf, char *zBuf){ if( fd<0 ){ time_t t; time(&t); - memcpy(zBuf, &t, sizeof(t)); - memcpy(&zBuf[sizeof(t)], &randomnessPid, sizeof(randomnessPid)); + memmove(zBuf, &t, sizeof(t)); + memmove(&zBuf[sizeof(t)], &randomnessPid, sizeof(randomnessPid)); assert( sizeof(t)+sizeof(randomnessPid)<=(size_t)nBuf ); nBuf = sizeof(t) + sizeof(randomnessPid); }else{ @@ -37782,7 +37782,7 @@ static int proxyTakeConch(unixFile *pFile){ if( pathLen>=MAXPATHLEN ){ pathLen=MAXPATHLEN-1; } - memcpy(lockPath, &readBuf[PROXY_PATHINDEX], pathLen); + memmove(lockPath, &readBuf[PROXY_PATHINDEX], pathLen); lockPath[pathLen] = 0; tempLockPath = lockPath; tryOldLockPath = 1; @@ -37832,7 +37832,7 @@ static int proxyTakeConch(unixFile *pFile){ int writeSize = 0; writeBuffer[0] = (char)PROXY_CONCHVERSION; - memcpy(&writeBuffer[PROXY_HEADERLEN], myHostID, PROXY_HOSTIDLEN); + memmove(&writeBuffer[PROXY_HEADERLEN], myHostID, PROXY_HOSTIDLEN); if( pCtx->lockProxyPath!=NULL ){ strlcpy(&writeBuffer[PROXY_PATHINDEX], pCtx->lockProxyPath, MAXPATHLEN); @@ -37979,7 +37979,7 @@ static int proxyCreateConchPathname(char *dbPath, char **pConchPath){ if( conchPath==0 ){ return SQLITE_NOMEM_BKPT; } - memcpy(conchPath, dbPath, len+1); + memmove(conchPath, dbPath, len+1); /* now insert a "." before the last / character */ for( i=(len-1); i>=0; i-- ){ @@ -37995,7 +37995,7 @@ static int proxyCreateConchPathname(char *dbPath, char **pConchPath){ } /* append the "-conch" suffix to the file */ - memcpy(&conchPath[i+1], "-conch", 7); + memmove(&conchPath[i+1], "-conch", 7); assert( (int)strlen(conchPath) == len+7 ); return SQLITE_OK; @@ -38055,7 +38055,7 @@ static int proxyGetDbPathForUnixFile(unixFile *pFile, char *dbPath){ /* dot lock style uses the locking context to store the dot lock ** file path */ int len = strlen((char *)pFile->lockingContext) - strlen(DOTLOCK_SUFFIX); - memcpy(dbPath, (char *)pFile->lockingContext, len + 1); + memmove(dbPath, (char *)pFile->lockingContext, len + 1); }else{ /* all other styles use the locking context to store the db file path */ assert( strlen((char*)pFile->lockingContext)<=MAXPATHLEN ); @@ -40047,7 +40047,7 @@ SQLITE_API void sqlite3_win32_write_debug(const char *zBuf, int nBuf){ #if defined(SQLITE_WIN32_HAS_ANSI) if( nMin>0 ){ memset(zDbgBuf, 0, SQLITE_WIN32_DBG_BUF_SIZE); - memcpy(zDbgBuf, zBuf, nMin); + memmove(zDbgBuf, zBuf, nMin); osOutputDebugStringA(zDbgBuf); }else{ osOutputDebugStringA(zBuf); @@ -40063,7 +40063,7 @@ SQLITE_API void sqlite3_win32_write_debug(const char *zBuf, int nBuf){ #else if( nMin>0 ){ memset(zDbgBuf, 0, SQLITE_WIN32_DBG_BUF_SIZE); - memcpy(zDbgBuf, zBuf, nMin); + memmove(zDbgBuf, zBuf, nMin); fprintf(stderr, "%s", zDbgBuf); }else{ fprintf(stderr, "%s", zBuf); @@ -41400,16 +41400,16 @@ static int winRead( #if SQLITE_MAX_MMAP_SIZE>0 /* Deal with as much of this read request as possible by transfering - ** data from the memory mapping using memcpy(). */ + ** data from the memory mapping using memmove(). */ if( offsetmmapSize ){ if( offset+amt <= pFile->mmapSize ){ - memcpy(pBuf, &((u8 *)(pFile->pMapRegion))[offset], amt); + memmove(pBuf, &((u8 *)(pFile->pMapRegion))[offset], amt); OSTRACE(("READ-MMAP pid=%lu, pFile=%p, file=%p, rc=SQLITE_OK\n", osGetCurrentProcessId(), pFile, pFile->h)); return SQLITE_OK; }else{ int nCopy = (int)(pFile->mmapSize - offset); - memcpy(pBuf, &((u8 *)(pFile->pMapRegion))[offset], nCopy); + memmove(pBuf, &((u8 *)(pFile->pMapRegion))[offset], nCopy); pBuf = &((u8 *)pBuf)[nCopy]; amt -= nCopy; offset += nCopy; @@ -41478,16 +41478,16 @@ static int winWrite( #if defined(SQLITE_MMAP_READWRITE) && SQLITE_MAX_MMAP_SIZE>0 /* Deal with as much of this write request as possible by transfering - ** data from the memory mapping using memcpy(). */ + ** data from the memory mapping using memmove(). */ if( offsetmmapSize ){ if( offset+amt <= pFile->mmapSize ){ - memcpy(&((u8 *)(pFile->pMapRegion))[offset], pBuf, amt); + memmove(&((u8 *)(pFile->pMapRegion))[offset], pBuf, amt); OSTRACE(("WRITE-MMAP pid=%lu, pFile=%p, file=%p, rc=SQLITE_OK\n", osGetCurrentProcessId(), pFile, pFile->h)); return SQLITE_OK; }else{ int nCopy = (int)(pFile->mmapSize - offset); - memcpy(&((u8 *)(pFile->pMapRegion))[offset], pBuf, nCopy); + memmove(&((u8 *)(pFile->pMapRegion))[offset], pBuf, nCopy); pBuf = &((u8 *)pBuf)[nCopy]; amt -= nCopy; offset += nCopy; @@ -44978,7 +44978,7 @@ bitvec_set_rehash: if( aiValues==0 ){ return SQLITE_NOMEM_BKPT; }else{ - memcpy(aiValues, p->u.aHash, sizeof(p->u.aHash)); + memmove(aiValues, p->u.aHash, sizeof(p->u.aHash)); memset(p->u.apSub, 0, sizeof(p->u.apSub)); p->iDivisor = (p->iSize + BITVEC_NPTR - 1)/BITVEC_NPTR; rc = sqlite3BitvecSet(p, i); @@ -45018,7 +45018,7 @@ SQLITE_PRIVATE void sqlite3BitvecClear(Bitvec *p, u32 i, void *pBuf){ }else{ unsigned int j; u32 *aiValues = pBuf; - memcpy(aiValues, p->u.aHash, sizeof(p->u.aHash)); + memmove(aiValues, p->u.aHash, sizeof(p->u.aHash)); memset(p->u.aHash, 0, sizeof(p->u.aHash)); p->nSet = 0; for(j=0; jnoSync || (pPager->journalMode==PAGER_JOURNALMODE_MEMORY) || (sqlite3OsDeviceCharacteristics(pPager->fd)&SQLITE_IOCAP_SAFE_APPEND) ){ - memcpy(zHeader, aJournalMagic, sizeof(aJournalMagic)); + memmove(zHeader, aJournalMagic, sizeof(aJournalMagic)); put32bits(&zHeader[sizeof(aJournalMagic)], 0xffffffff); }else{ memset(zHeader, 0, sizeof(aJournalMagic)+4); @@ -50445,7 +50445,7 @@ static int pager_playback_one_page( */ void *pData; pData = pPg->pData; - memcpy(pData, (u8*)aData, pPager->pageSize); + memmove(pData, (u8*)aData, pPager->pageSize); pPager->xReiniter(pPg); /* It used to be that sqlite3PcacheMakeClean(pPg) was called here. But ** that call was dangerous and had no detectable benefit since the cache @@ -50456,7 +50456,7 @@ static int pager_playback_one_page( /* If this was page 1, then restore the value of Pager.dbFileVers. ** Do this before any decoding. */ if( pgno==1 ){ - memcpy(&pPager->dbFileVers, &((u8*)pData)[24],sizeof(pPager->dbFileVers)); + memmove(&pPager->dbFileVers, &((u8*)pData)[24],sizeof(pPager->dbFileVers)); } /* Decode the page just read from disk */ @@ -51020,7 +51020,7 @@ static int readDbPage(PgHdr *pPg){ memset(pPager->dbFileVers, 0xff, sizeof(pPager->dbFileVers)); }else{ u8 *dbFileVers = &((u8*)pPg->pData)[24]; - memcpy(&pPager->dbFileVers, dbFileVers, sizeof(pPager->dbFileVers)); + memmove(&pPager->dbFileVers, dbFileVers, sizeof(pPager->dbFileVers)); } } CODEC1(pPager, pPg->pData, pPg->pgno, 3, rc = SQLITE_NOMEM_BKPT); @@ -52236,7 +52236,7 @@ static int syncJournal(Pager *pPager, int newHdr){ u8 aMagic[8]; u8 zHeader[sizeof(aJournalMagic)+4]; - memcpy(zHeader, aJournalMagic, sizeof(aJournalMagic)); + memmove(zHeader, aJournalMagic, sizeof(aJournalMagic)); put32bits(&zHeader[sizeof(aJournalMagic)], pPager->nRec); iNextHdrOffset = journalHdrOffset(pPager); @@ -52394,7 +52394,7 @@ static int pager_write_pagelist(Pager *pPager, PgHdr *pList){ ** page caused the database file to grow, update dbFileSize. */ if( pgno==1 ){ - memcpy(&pPager->dbFileVers, &pData[24], sizeof(pPager->dbFileVers)); + memmove(&pPager->dbFileVers, &pData[24], sizeof(pPager->dbFileVers)); } if( pgno>pPager->dbFileSize ){ pPager->dbFileSize = pgno; @@ -52765,15 +52765,15 @@ SQLITE_PRIVATE int sqlite3PagerOpen( if( zPathname ){ assert( nPathname>0 ); pPager->zJournal = (char*)(pPtr += nPathname + 1 + nUri); - memcpy(pPager->zFilename, zPathname, nPathname); - if( nUri ) memcpy(&pPager->zFilename[nPathname+1], zUri, nUri); - memcpy(pPager->zJournal, zPathname, nPathname); - memcpy(&pPager->zJournal[nPathname], "-journal\000", 8+2); + memmove(pPager->zFilename, zPathname, nPathname); + if( nUri ) memmove(&pPager->zFilename[nPathname+1], zUri, nUri); + memmove(pPager->zJournal, zPathname, nPathname); + memmove(&pPager->zJournal[nPathname], "-journal\000", 8+2); sqlite3FileSuffix3(pPager->zFilename, pPager->zJournal); #ifndef SQLITE_OMIT_WAL pPager->zWal = &pPager->zJournal[nPathname+8+1]; - memcpy(pPager->zWal, zPathname, nPathname); - memcpy(&pPager->zWal[nPathname], "-wal\000", 4+1); + memmove(pPager->zWal, zPathname, nPathname); + memmove(&pPager->zWal[nPathname], "-wal\000", 4+1); sqlite3FileSuffix3(pPager->zFilename, pPager->zWal); #endif sqlite3DbFree(0, zPathname); @@ -54216,7 +54216,7 @@ static int pager_incr_changecounter(Pager *pPager, int isDirectMode){ ** next time a read transaction is opened the cache will be ** flushed (as the change-counter values will not match). */ const void *pCopy = (const void *)&((const char *)zBuf)[24]; - memcpy(&pPager->dbFileVers, pCopy, sizeof(pPager->dbFileVers)); + memmove(&pPager->dbFileVers, pCopy, sizeof(pPager->dbFileVers)); pPager->changeCountDone = 1; } }else{ @@ -56292,9 +56292,9 @@ static void walIndexWriteHdr(Wal *pWal){ pWal->hdr.isInit = 1; pWal->hdr.iVersion = WALINDEX_MAX_VERSION; walChecksumBytes(1, (u8*)&pWal->hdr, nCksum, 0, pWal->hdr.aCksum); - memcpy((void*)&aHdr[1], (const void*)&pWal->hdr, sizeof(WalIndexHdr)); + memmove((void*)&aHdr[1], (const void*)&pWal->hdr, sizeof(WalIndexHdr)); walShmBarrier(pWal); - memcpy((void*)&aHdr[0], (const void*)&pWal->hdr, sizeof(WalIndexHdr)); + memmove((void*)&aHdr[0], (const void*)&pWal->hdr, sizeof(WalIndexHdr)); } /* @@ -56323,7 +56323,7 @@ static void walEncodeFrame( sqlite3Put4byte(&aFrame[0], iPage); sqlite3Put4byte(&aFrame[4], nTruncate); if( pWal->iReCksum==0 ){ - memcpy(&aFrame[8], pWal->hdr.aSalt, 8); + memmove(&aFrame[8], pWal->hdr.aSalt, 8); nativeCksum = (pWal->hdr.bigEndCksum==SQLITE_BIGENDIAN); walChecksumBytes(nativeCksum, aFrame, 8, aCksum, aCksum); @@ -56777,7 +56777,7 @@ static int walIndexRecover(Wal *pWal){ pWal->hdr.bigEndCksum = (u8)(magic&0x00000001); pWal->szPage = szPage; pWal->nCkpt = sqlite3Get4byte(&aBuf[12]); - memcpy(&pWal->hdr.aSalt, &aBuf[16], 8); + memmove(&pWal->hdr.aSalt, &aBuf[16], 8); /* Verify that the WAL header checksum is correct */ walChecksumBytes(pWal->hdr.bigEndCksum==SQLITE_BIGENDIAN, @@ -57084,7 +57084,7 @@ static void walMerge( *paRight = aLeft; *pnRight = iOut; - memcpy(aLeft, aTmp, sizeof(aTmp[0])*iOut); + memmove(aLeft, aTmp, sizeof(aTmp[0])*iOut); } /* @@ -57311,7 +57311,7 @@ static void walRestartHdr(Wal *pWal, u32 salt1){ pWal->nCkpt++; pWal->hdr.mxFrame = 0; sqlite3Put4byte((u8*)&aSalt[0], 1 + sqlite3Get4byte((u8*)&aSalt[0])); - memcpy(&pWal->hdr.aSalt[1], &salt1, 4); + memmove(&pWal->hdr.aSalt[1], &salt1, 4); walIndexWriteHdr(pWal); pInfo->nBackfill = 0; pInfo->nBackfillAttempted = 0; @@ -57652,9 +57652,9 @@ static int walIndexTryHdr(Wal *pWal, int *pChanged){ ** reordering the reads and writes. */ aHdr = walIndexHdr(pWal); - memcpy(&h1, (void *)&aHdr[0], sizeof(h1)); + memmove(&h1, (void *)&aHdr[0], sizeof(h1)); walShmBarrier(pWal); - memcpy(&h2, (void *)&aHdr[1], sizeof(h2)); + memmove(&h2, (void *)&aHdr[1], sizeof(h2)); if( memcmp(&h1, &h2, sizeof(h1))!=0 ){ return 1; /* Dirty read */ @@ -57669,7 +57669,7 @@ static int walIndexTryHdr(Wal *pWal, int *pChanged){ if( memcmp(&pWal->hdr, &h1, sizeof(WalIndexHdr)) ){ *pChanged = 1; - memcpy(&pWal->hdr, &h1, sizeof(WalIndexHdr)); + memmove(&pWal->hdr, &h1, sizeof(WalIndexHdr)); pWal->szPage = (pWal->hdr.szPage&0xfe00) + ((pWal->hdr.szPage&0x0001)<<16); testcase( pWal->szPage<=32768 ); testcase( pWal->szPage>=65536 ); @@ -57875,7 +57875,7 @@ static int walBeginShmUnreliable(Wal *pWal, int *pChanged){ ** Assume the in-memory WAL-index substitute is correct and load it ** into pWal->hdr. */ - memcpy(&pWal->hdr, (void*)walIndexHdr(pWal), sizeof(WalIndexHdr)); + memmove(&pWal->hdr, (void*)walIndexHdr(pWal), sizeof(WalIndexHdr)); /* Make sure some writer hasn't come in and changed the WAL file out ** from under us, then disconnected, while we were not looking. @@ -58379,7 +58379,7 @@ SQLITE_PRIVATE int sqlite3WalBeginReadTransaction(Wal *pWal, int *pChanged){ && pSnapshot->mxFrame>=pInfo->nBackfillAttempted ){ assert( pWal->readLock>0 ); - memcpy(&pWal->hdr, pSnapshot, sizeof(WalIndexHdr)); + memmove(&pWal->hdr, pSnapshot, sizeof(WalIndexHdr)); *pChanged = bChanged; }else{ rc = SQLITE_BUSY_SNAPSHOT; @@ -58631,7 +58631,7 @@ SQLITE_PRIVATE int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *p /* Restore the clients cache of the wal-index header to the state it ** was in before the client began writing to the database. */ - memcpy(&pWal->hdr, (void *)walIndexHdr(pWal), sizeof(WalIndexHdr)); + memmove(&pWal->hdr, (void *)walIndexHdr(pWal), sizeof(WalIndexHdr)); for(iFrame=pWal->hdr.mxFrame+1; ALWAYS(rc==SQLITE_OK) && iFrame<=iMax; @@ -58939,7 +58939,7 @@ SQLITE_PRIVATE int sqlite3WalFrames( sqlite3Put4byte(&aWalHdr[8], szPage); sqlite3Put4byte(&aWalHdr[12], pWal->nCkpt); if( pWal->nCkpt==0 ) sqlite3_randomness(8, pWal->hdr.aSalt); - memcpy(&aWalHdr[16], pWal->hdr.aSalt, 8); + memmove(&aWalHdr[16], pWal->hdr.aSalt, 8); walChecksumBytes(1, aWalHdr, WAL_HDRSIZE-2*4, 0, aCksum); sqlite3Put4byte(&aWalHdr[24], aCksum[0]); sqlite3Put4byte(&aWalHdr[28], aCksum[1]); @@ -59329,7 +59329,7 @@ SQLITE_PRIVATE int sqlite3WalSnapshotGet(Wal *pWal, sqlite3_snapshot **ppSnapsho if( pRet==0 ){ rc = SQLITE_NOMEM_BKPT; }else{ - memcpy(pRet, &pWal->hdr, sizeof(WalIndexHdr)); + memmove(pRet, &pWal->hdr, sizeof(WalIndexHdr)); *ppSnapshot = (sqlite3_snapshot*)pRet; } @@ -61882,10 +61882,10 @@ static int defragmentPage(MemPage *pPage, int nMaxFrag){ if( cbrk==pc ) continue; temp = sqlite3PagerTempSpace(pPage->pBt->pPager); x = get2byte(&data[hdr+5]); - memcpy(&temp[x], &data[x], (cbrk+size) - x); + memmove(&temp[x], &data[x], (cbrk+size) - x); src = temp; } - memcpy(&data[cbrk], &src[pc], size); + memmove(&data[cbrk], &src[pc], size); } data[hdr+7] = 0; @@ -61944,7 +61944,7 @@ static u8 *pageFindSlot(MemPage *pPg, int nByte, int *pRc){ /* Remove the slot from the free-list. Update the number of ** fragmented bytes within the page. */ - memcpy(&aData[iAddr], &aData[pc], 2); + memmove(&aData[iAddr], &aData[pc], 2); aData[hdr+7] += (u8)x; }else{ /* The slot remains on the free-list. Reduce its size to account @@ -62733,7 +62733,7 @@ SQLITE_PRIVATE int sqlite3BtreeOpen( return SQLITE_NOMEM_BKPT; } if( isMemdb ){ - memcpy(zFullPathname, zFilename, nFilename); + memmove(zFullPathname, zFilename, nFilename); }else{ rc = sqlite3OsFullPathname(pVfs, zFilename, nFullPathname, zFullPathname); @@ -63617,7 +63617,7 @@ static int newDatabase(BtShared *pBt){ data = pP1->aData; rc = sqlite3PagerWrite(pP1->pDbPage); if( rc ) return rc; - memcpy(data, zMagicHeader, sizeof(zMagicHeader)); + memmove(data, zMagicHeader, sizeof(zMagicHeader)); assert( sizeof(zMagicHeader)==16 ); data[16] = (u8)((pBt->pageSize>>8)&0xff); data[17] = (u8)((pBt->pageSize>>16)&0xff); @@ -64968,10 +64968,10 @@ static int copyPayload( if( rc!=SQLITE_OK ){ return rc; } - memcpy(pPayload, pBuf, nByte); + memmove(pPayload, pBuf, nByte); }else{ /* Copy data from page to buffer (a read operation) */ - memcpy(pBuf, pPayload, nByte); + memmove(pBuf, pPayload, nByte); } return SQLITE_OK; } @@ -65155,10 +65155,10 @@ static int accessPayload( u8 aSave[4]; u8 *aWrite = &pBuf[-4]; assert( aWrite>=pBufStart ); /* due to (6) */ - memcpy(aSave, aWrite, 4); + memmove(aSave, aWrite, 4); rc = sqlite3OsRead(fd, aWrite, a+4, (i64)pBt->pageSize*(nextPage-1)); nextPage = get4byte(aWrite); - memcpy(aWrite, aSave, 4); + memmove(aWrite, aSave, 4); }else #endif @@ -66238,7 +66238,7 @@ static int allocateBtreePage( goto end_allocate_page; } *pPgno = iTrunk; - memcpy(&pPage1->aData[32], &pTrunk->aData[0], 4); + memmove(&pPage1->aData[32], &pTrunk->aData[0], 4); *ppPage = pTrunk; pTrunk = 0; TRACE(("ALLOCATE: %d trunk - %d free pages left\n", *pPgno, n-1)); @@ -66262,13 +66262,13 @@ static int allocateBtreePage( } if( k==0 ){ if( !pPrevTrunk ){ - memcpy(&pPage1->aData[32], &pTrunk->aData[0], 4); + memmove(&pPage1->aData[32], &pTrunk->aData[0], 4); }else{ rc = sqlite3PagerWrite(pPrevTrunk->pDbPage); if( rc!=SQLITE_OK ){ goto end_allocate_page; } - memcpy(&pPrevTrunk->aData[0], &pTrunk->aData[0], 4); + memmove(&pPrevTrunk->aData[0], &pTrunk->aData[0], 4); } }else{ /* The trunk page is required by the caller but it contains @@ -66291,9 +66291,9 @@ static int allocateBtreePage( releasePage(pNewTrunk); goto end_allocate_page; } - memcpy(&pNewTrunk->aData[0], &pTrunk->aData[0], 4); + memmove(&pNewTrunk->aData[0], &pTrunk->aData[0], 4); put4byte(&pNewTrunk->aData[4], k-1); - memcpy(&pNewTrunk->aData[8], &pTrunk->aData[12], (k-1)*4); + memmove(&pNewTrunk->aData[8], &pTrunk->aData[12], (k-1)*4); releasePage(pNewTrunk); if( !pPrevTrunk ){ assert( sqlite3PagerIswriteable(pPage1->pDbPage) ); @@ -66358,7 +66358,7 @@ static int allocateBtreePage( rc = sqlite3PagerWrite(pTrunk->pDbPage); if( rc ) goto end_allocate_page; if( closestpDbPage) ); if( nSrc>=n ){ - memcpy(pPayload, pSrc, n); + memmove(pPayload, pSrc, n); }else if( nSrc>0 ){ n = nSrc; - memcpy(pPayload, pSrc, n); + memmove(pPayload, pSrc, n); }else{ memset(pPayload, 0, n); } @@ -66951,7 +66951,7 @@ static void insertCell( assert( sz==pPage->xCellSize(pPage, pCell) || (sz==8 && iChild>0) ); if( pPage->nOverflow || sz+2>pPage->nFree ){ if( pTemp ){ - memcpy(pTemp, pCell, sz); + memmove(pTemp, pCell, sz); pCell = pTemp; } if( iChild ){ @@ -66989,7 +66989,7 @@ static void insertCell( assert( idx >= pPage->cellOffset+2*pPage->nCell+2 || CORRUPT_DB ); assert( idx+sz <= (int)pPage->pBt->usableSize ); pPage->nFree -= (u16)(2 + sz); - memcpy(&data[idx], pCell, sz); + memmove(&data[idx], pCell, sz); if( iChild ){ put4byte(&data[idx], iChild); } @@ -67086,7 +67086,7 @@ static int rebuildPage( u8 *pData; i = get2byte(&aData[hdr+5]); - memcpy(&pTmp[i], &aData[i], usableSize - i); + memmove(&pTmp[i], &aData[i], usableSize - i); pData = pEnd; for(i=0; ixCellSize(pPg, pCell) || CORRUPT_DB ); testcase( szCell[i]!=pPg->xCellSize(pPg,pCell) ); } @@ -67164,7 +67164,7 @@ static int pageInsertArray( } /* pSlot and pCArray->apCell[i] will never overlap on a well-formed ** database. But they might for a corrupt database. Hence use memmove() - ** since memcpy() sends SIGABORT with overlapping buffers on OpenBSD */ + ** since memmove() sends SIGABORT with overlapping buffers on OpenBSD */ assert( (pSlot+sz)<=pCArray->apCell[i] || pSlot>=(pCArray->apCell[i]+sz) || CORRUPT_DB ); @@ -67261,7 +67261,7 @@ static int editPage( #ifdef SQLITE_DEBUG u8 *pTmp = sqlite3PagerTempSpace(pPg->pBt->pPager); - memcpy(pTmp, aData, pPg->pBt->usableSize); + memmove(pTmp, aData, pPg->pBt->usableSize); #endif /* Remove cells from the start and end of the page */ @@ -67537,8 +67537,8 @@ static void copyNodeContent(MemPage *pFrom, MemPage *pTo, int *pRC){ /* Copy the b-tree node content from page pFrom to page pTo. */ iData = get2byte(&aFrom[iFromHdr+5]); - memcpy(&aTo[iData], &aFrom[iData], pBt->usableSize-iData); - memcpy(&aTo[iToHdr], &aFrom[iFromHdr], pFrom->cellOffset + 2*pFrom->nCell); + memmove(&aTo[iData], &aFrom[iData], pBt->usableSize-iData); + memmove(&aTo[iToHdr], &aFrom[iFromHdr], pFrom->cellOffset + 2*pFrom->nCell); /* Reinitialize page pTo so that the contents of the MemPage structure ** match the new data. The initialization of pTo can actually fail under @@ -67732,7 +67732,7 @@ static int balance_nonroot( memset(apOld, 0, (i+1)*sizeof(MemPage*)); goto balance_cleanup; }else{ - memcpy(&aOvflSpace[iOff], apDiv[i], szNew[i]); + memmove(&aOvflSpace[iOff], apDiv[i], szNew[i]); apDiv[i] = &aOvflSpace[apDiv[i]-pParent->aData]; } } @@ -67846,7 +67846,7 @@ static int balance_nonroot( iSpace1 += sz; assert( sz<=pBt->maxLocal+23 ); assert( iSpace1 <= (int)pBt->pageSize ); - memcpy(pTemp, apDiv[i], sz); + memmove(pTemp, apDiv[i], sz); b.apCell[b.nCell] = pTemp+leafCorrection; assert( leafCorrection==0 || leafCorrection==4 ); b.szCell[b.nCell] = b.szCell[b.nCell] - leafCorrection; @@ -67855,7 +67855,7 @@ static int balance_nonroot( assert( pOld->hdrOffset==0 ); /* The right pointer of the child page pOld becomes the left ** pointer of the divider cell */ - memcpy(b.apCell[b.nCell], &pOld->aData[8], 4); + memmove(b.apCell[b.nCell], &pOld->aData[8], 4); }else{ assert( leafCorrection==4 ); while( b.szCell[b.nCell]<4 ){ @@ -68093,7 +68093,7 @@ static int balance_nonroot( ** originally in the same field of the right-most old sibling page. */ if( (pageFlags & PTF_LEAF)==0 && nOld!=nNew ){ MemPage *pOld = (nNew>nOld ? apNew : apOld)[nOld-1]; - memcpy(&apNew[nNew-1]->aData[8], &pOld->aData[8], 4); + memmove(&apNew[nNew-1]->aData[8], &pOld->aData[8], 4); } /* Make any required updates to pointer map entries associated with @@ -68167,7 +68167,7 @@ static int balance_nonroot( sz = b.szCell[j] + leafCorrection; pTemp = &aOvflSpace[iOvflSpace]; if( !pNew->leaf ){ - memcpy(&pNew->aData[8], pCell, 4); + memmove(&pNew->aData[8], pCell, 4); }else if( leafData ){ /* If the tree is a leaf-data tree, and the siblings are leaves, ** then there is no divider cell in b.apCell[]. Instead, the divider @@ -68395,9 +68395,9 @@ static int balance_deeper(MemPage *pRoot, MemPage **ppChild){ TRACE(("BALANCE: copy root %d into %d\n", pRoot->pgno, pChild->pgno)); /* Copy the overflow cells from pRoot to pChild */ - memcpy(pChild->aiOvfl, pRoot->aiOvfl, + memmove(pChild->aiOvfl, pRoot->aiOvfl, pRoot->nOverflow*sizeof(pRoot->aiOvfl[0])); - memcpy(pChild->apOvfl, pRoot->apOvfl, + memmove(pChild->apOvfl, pRoot->apOvfl, pRoot->nOverflow*sizeof(pRoot->apOvfl[0])); pChild->nOverflow = pRoot->nOverflow; @@ -68684,7 +68684,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert( } oldCell = findCell(pPage, idx); if( !pPage->leaf ){ - memcpy(newCell, oldCell, 4); + memmove(newCell, oldCell, 4); } rc = clearCell(pPage, oldCell, &info); if( info.nSize==szNew && info.nLocal==info.nPayload @@ -68701,7 +68701,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert( ** necessary to add the PTRMAP_OVERFLOW1 pointer-map entry. */ assert( rc==SQLITE_OK ); /* clearCell never fails when nLocal==nPayload */ if( oldCell+szNew > pPage->aDataEnd ) return SQLITE_CORRUPT_BKPT; - memcpy(oldCell, newCell, szNew); + memmove(oldCell, newCell, szNew); return SQLITE_OK; } dropCell(pPage, idx, info.nSize, &rc); @@ -68757,7 +68757,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert( if( pCur->pKey==0 ){ rc = SQLITE_NOMEM; }else{ - memcpy(pCur->pKey, pX->pKey, pX->nKey); + memmove(pCur->pKey, pX->pKey, pX->nKey); } } pCur->eState = CURSOR_REQUIRESEEK; @@ -70687,7 +70687,7 @@ static int backupOnePage( ** cached parse of the page). MemPage.isInit is marked ** "MUST BE FIRST" for this purpose. */ - memcpy(zOut, zIn, nCopy); + memmove(zOut, zIn, nCopy); ((u8 *)sqlite3PagerGetExtra(pDestPg))[0] = 0; if( iOff==0 && bUpdate==0 ){ sqlite3Put4byte(&zOut[28], sqlite3BtreeLastPage(p->pSrc)); @@ -71363,7 +71363,7 @@ SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPre if( bPreserve && pMem->z ){ assert( pMem->z!=pMem->zMalloc ); - memcpy(pMem->zMalloc, pMem->z, pMem->n); + memmove(pMem->zMalloc, pMem->z, pMem->n); } if( (pMem->flags&MEM_Dyn)!=0 ){ assert( pMem->xDel!=0 && pMem->xDel!=SQLITE_DYNAMIC ); @@ -71556,7 +71556,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemFinalize(Mem *pMem, FuncDef *pFunc){ pFunc->xFinalize(&ctx); /* IMP: R-24505-23230 */ assert( (pMem->flags & MEM_Dyn)==0 ); if( pMem->szMalloc>0 ) sqlite3DbFreeNN(pMem->db, pMem->zMalloc); - memcpy(pMem, &t, sizeof(t)); + memmove(pMem, &t, sizeof(t)); return ctx.isError; } @@ -72033,7 +72033,7 @@ SQLITE_PRIVATE void sqlite3VdbeMemShallowCopy(Mem *pTo, const Mem *pFrom, int sr assert( (pFrom->flags & MEM_RowSet)==0 ); assert( pTo->db==pFrom->db ); if( VdbeMemDynamic(pTo) ){ vdbeClrCopy(pTo,pFrom,srcType); return; } - memcpy(pTo, pFrom, MEMCELLSIZE); + memmove(pTo, pFrom, MEMCELLSIZE); if( (pFrom->flags&MEM_Static)==0 ){ pTo->flags &= ~(MEM_Dyn|MEM_Static|MEM_Ephem); assert( srcType==MEM_Ephem || srcType==MEM_Static ); @@ -72050,7 +72050,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemCopy(Mem *pTo, const Mem *pFrom){ assert( (pFrom->flags & MEM_RowSet)==0 ); if( VdbeMemDynamic(pTo) ) vdbeMemClearExternAndSetNull(pTo); - memcpy(pTo, pFrom, MEMCELLSIZE); + memmove(pTo, pFrom, MEMCELLSIZE); pTo->flags &= ~MEM_Dyn; if( pTo->flags&(MEM_Str|MEM_Blob) ){ if( 0==(pFrom->flags&MEM_Static) ){ @@ -72074,7 +72074,7 @@ SQLITE_PRIVATE void sqlite3VdbeMemMove(Mem *pTo, Mem *pFrom){ assert( pFrom->db==0 || pTo->db==0 || pFrom->db==pTo->db ); sqlite3VdbeMemRelease(pTo); - memcpy(pTo, pFrom, sizeof(Mem)); + memmove(pTo, pFrom, sizeof(Mem)); pFrom->flags = MEM_Null; pFrom->szMalloc = 0; } @@ -72149,7 +72149,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemSetStr( if( sqlite3VdbeMemClearAndResize(pMem, MAX(nAlloc,32)) ){ return SQLITE_NOMEM_BKPT; } - memcpy(pMem->z, z, nAlloc); + memmove(pMem->z, z, nAlloc); }else if( xDel==SQLITE_DYNAMIC ){ sqlite3VdbeMemRelease(pMem); pMem->zMalloc = pMem->z = (char *)z; @@ -73047,7 +73047,7 @@ SQLITE_PRIVATE void sqlite3VdbeSwap(Vdbe *pA, Vdbe *pB){ pB->zSql = zTmp; pB->expmask = pA->expmask; pB->prepFlags = pA->prepFlags; - memcpy(pB->aCounter, pA->aCounter, sizeof(pB->aCounter)); + memmove(pB->aCounter, pA->aCounter, sizeof(pB->aCounter)); pB->aCounter[SQLITE_STMTSTATUS_REPREPARE]++; } @@ -73259,7 +73259,7 @@ SQLITE_PRIVATE int sqlite3VdbeAddOp4Dup8( int p4type /* P4 operand type */ ){ char *p4copy = sqlite3DbMallocRawNN(sqlite3VdbeDb(p), 8); - if( p4copy ) memcpy(p4copy, zP4, 8); + if( p4copy ) memmove(p4copy, zP4, 8); return sqlite3VdbeAddOp4(p, op, p1, p2, p3, p4copy, p4type); } @@ -76327,7 +76327,7 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialPut(u8 *buf, Mem *pMem, u32 serial_type){ u32 i; if( serial_type==7 ){ assert( sizeof(v)==sizeof(pMem->u.r) ); - memcpy(&v, &pMem->u.r, sizeof(v)); + memmove(&v, &pMem->u.r, sizeof(v)); swapMixedEndianFloat(v); }else{ v = pMem->u.i; @@ -76346,7 +76346,7 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialPut(u8 *buf, Mem *pMem, u32 serial_type){ assert( pMem->n + ((pMem->flags & MEM_Zero)?pMem->u.nZero:0) == (int)sqlite3VdbeSerialTypeLen(serial_type) ); len = pMem->n; - if( len>0 ) memcpy(buf, pMem->z, len); + if( len>0 ) memmove(buf, pMem->z, len); return len; } @@ -76403,7 +76403,7 @@ static u32 SQLITE_NOINLINE serialGet( #endif assert( sizeof(x)==8 && sizeof(pMem->u.r)==8 ); swapMixedEndianFloat(x); - memcpy(&pMem->u.r, &x, sizeof(x)); + memmove(&pMem->u.r, &x, sizeof(x)); pMem->flags = sqlite3IsNaN(pMem->u.r) ? MEM_Null : MEM_Real; } return 8; @@ -77986,7 +77986,7 @@ SQLITE_API sqlite3_value *sqlite3_value_dup(const sqlite3_value *pOrig){ pNew = sqlite3_malloc( sizeof(*pNew) ); if( pNew==0 ) return 0; memset(pNew, 0, sizeof(*pNew)); - memcpy(pNew, pOrig, MEMCELLSIZE); + memmove(pNew, pOrig, MEMCELLSIZE); pNew->flags &= ~MEM_Dyn; pNew->db = 0; if( pNew->flags&(MEM_Str|MEM_Blob) ){ @@ -81382,7 +81382,7 @@ case OP_ResultRow: { ** ** It is illegal for P1 and P3 to be the same register. Sometimes, ** if P3 is the same register as P2, the implementation is able -** to avoid a memcpy(). +** to avoid a memmove(). */ case OP_Concat: { /* same as TK_CONCAT, in1, in2, out3 */ i64 nByte; @@ -81407,9 +81407,9 @@ case OP_Concat: { /* same as TK_CONCAT, in1, in2, out3 */ } MemSetTypeFlag(pOut, MEM_Str); if( pOut!=pIn2 ){ - memcpy(pOut->z, pIn2->z, pIn2->n); + memmove(pOut->z, pIn2->z, pIn2->n); } - memcpy(&pOut->z[pIn2->n], pIn1->z, pIn1->n); + memmove(&pOut->z[pIn2->n], pIn1->z, pIn1->n); pOut->z[nByte]=0; pOut->z[nByte+1] = 0; pOut->flags |= MEM_Term; @@ -81636,7 +81636,7 @@ case OP_ShiftRight: { /* same as TK_RSHIFT, in1, in2, out3 */ if( iB>=64 ){ iA = (iA>=0 || op==OP_ShiftLeft) ? 0 : -1; }else{ - memcpy(&uA, &iA, sizeof(uA)); + memmove(&uA, &iA, sizeof(uA)); if( op==OP_ShiftLeft ){ uA <<= iB; }else{ @@ -81644,7 +81644,7 @@ case OP_ShiftRight: { /* same as TK_RSHIFT, in1, in2, out3 */ /* Sign-extend on a right shift of a negative number */ if( iA<0 ) uA |= ((((u64)0xffffffff)<<32)|0xffffffff) << (64-iB); } - memcpy(&iA, &uA, sizeof(iA)); + memmove(&iA, &uA, sizeof(iA)); } } pOut->u.i = iA; @@ -82602,7 +82602,7 @@ case OP_Column: { }else{ pDest->z = pDest->zMalloc; } - memcpy(pDest->z, zData, len); + memmove(pDest->z, zData, len); pDest->z[len] = 0; pDest->z[len+1] = 0; pDest->flags = aFlag[t&1]; @@ -82934,7 +82934,7 @@ case OP_Savepoint: { pNew = sqlite3DbMallocRawNN(db, sizeof(Savepoint)+nName+1); if( pNew ){ pNew->zName = (char *)&pNew[1]; - memcpy(pNew->zName, zName, nName+1); + memmove(pNew->zName, zName, nName+1); /* If there is no open transaction, then mark this as a special ** "transaction savepoint". */ @@ -88348,7 +88348,7 @@ static int vdbePmaReadBlob( /* Copy as much data as is available in the buffer into the start of ** p->aAlloc[]. */ - memcpy(p->aAlloc, &p->aBuffer[iBuf], nAvail); + memmove(p->aAlloc, &p->aBuffer[iBuf], nAvail); p->iReadOff += nAvail; nRem = nByte - nAvail; @@ -88364,7 +88364,7 @@ static int vdbePmaReadBlob( rc = vdbePmaReadBlob(p, nCopy, &aNext); if( rc!=SQLITE_OK ) return rc; assert( aNext!=p->aAlloc ); - memcpy(&p->aAlloc[nByte - nRem], aNext, nCopy); + memmove(&p->aAlloc[nByte - nRem], aNext, nCopy); nRem -= nCopy; } @@ -88770,7 +88770,7 @@ SQLITE_PRIVATE int sqlite3VdbeSorterInit( rc = SQLITE_NOMEM_BKPT; }else{ pSorter->pKeyInfo = pKeyInfo = (KeyInfo*)((u8*)pSorter + sz); - memcpy(pKeyInfo, pCsr->pKeyInfo, szKeyInfo); + memmove(pKeyInfo, pCsr->pKeyInfo, szKeyInfo); pKeyInfo->db = 0; if( nField && nWorker==0 ){ pKeyInfo->nKeyField = nField; @@ -89278,7 +89278,7 @@ static void vdbePmaWriteBlob(PmaWriter *p, u8 *pData, int nData){ nCopy = p->nBuffer - p->iBufEnd; } - memcpy(&p->aBuffer[p->iBufEnd], &pData[nData-nRem], nCopy); + memmove(&p->aBuffer[p->iBufEnd], &pData[nData-nRem], nCopy); p->iBufEnd += nCopy; if( p->iBufEnd==p->nBuffer ){ p->eFWErr = sqlite3OsWrite(p->pFd, @@ -89655,7 +89655,7 @@ SQLITE_PRIVATE int sqlite3VdbeSorterWrite( pNew->u.pNext = pSorter->list.pList; } - memcpy(SRVAL(pNew), pVal->z, pVal->n); + memmove(SRVAL(pNew), pVal->z, pVal->n); pNew->nVal = pVal->n; pSorter->list.pList = pNew; @@ -90493,7 +90493,7 @@ SQLITE_PRIVATE int sqlite3VdbeSorterRowkey(const VdbeCursor *pCsr, Mem *pOut){ } pOut->n = nKey; MemSetTypeFlag(pOut, MEM_Blob); - memcpy(pOut->z, pKey, nKey); + memmove(pOut->z, pKey, nKey); return SQLITE_OK; } @@ -90676,7 +90676,7 @@ static int memjrnlRead( do { int iSpace = p->nChunkSize - iChunkOffset; int nCopy = MIN(nRead, (p->nChunkSize - iChunkOffset)); - memcpy(zOut, (u8*)pChunk->zChunk + iChunkOffset, nCopy); + memmove(zOut, (u8*)pChunk->zChunk + iChunkOffset, nCopy); zOut += nCopy; nRead -= iSpace; iChunkOffset = 0; @@ -90774,7 +90774,7 @@ static int memjrnlWrite( || defined(SQLITE_ENABLE_BATCH_ATOMIC_WRITE) if( iOfst==0 && p->pFirst ){ assert( p->nChunkSize>iAmt ); - memcpy((u8*)p->pFirst->zChunk, zBuf, iAmt); + memmove((u8*)p->pFirst->zChunk, zBuf, iAmt); }else #else assert( iOfst>0 || p->pFirst==0 ); @@ -90802,7 +90802,7 @@ static int memjrnlWrite( p->endpoint.pChunk = pNew; } - memcpy((u8*)p->endpoint.pChunk->zChunk + iChunkOffset, zWrite, iSpace); + memmove((u8*)p->endpoint.pChunk->zChunk + iChunkOffset, zWrite, iSpace); zWrite += iSpace; nWrite -= iSpace; p->endpoint.iOffset += iSpace; @@ -91237,14 +91237,14 @@ static void resolveAlias( /* Before calling sqlite3ExprDelete(), set the EP_Static flag. This ** prevents ExprDelete() from deleting the Expr structure itself, - ** allowing it to be repopulated by the memcpy() on the following line. + ** allowing it to be repopulated by the memmove() on the following line. ** The pExpr->u.zToken might point into memory that will be freed by the ** sqlite3DbFree(db, pDup) on the last line of this block, so be sure to ** make a copy of the token before doing the sqlite3DbFree(). */ ExprSetProperty(pExpr, EP_Static); sqlite3ExprDelete(db, pExpr); - memcpy(pExpr, pDup, sizeof(*pExpr)); + memmove(pExpr, pDup, sizeof(*pExpr)); if( !ExprHasProperty(pExpr, EP_IntValue) && pExpr->u.zToken!=0 ){ assert( (pExpr->flags & (EP_Reduced|EP_TokenOnly))==0 ); pExpr->u.zToken = sqlite3DbStrDup(db, pExpr->u.zToken); @@ -93466,7 +93466,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprAlloc( }else{ pNew->u.zToken = (char*)&pNew[1]; assert( pToken->z!=0 || pToken->n==0 ); - if( pToken->n ) memcpy(pNew->u.zToken, pToken->z, pToken->n); + if( pToken->n ) memmove(pNew->u.zToken, pToken->z, pToken->n); pNew->u.zToken[pToken->n] = 0; if( dequote && sqlite3Isquote(pNew->u.zToken[0]) ){ if( pNew->u.zToken[0]=='"' ) pNew->flags |= EP_DblQuoted; @@ -93908,10 +93908,10 @@ static Expr *exprDup(sqlite3 *db, Expr *p, int dupFlags, u8 **pzBuffer){ } if( dupFlags ){ assert( ExprHasProperty(p, EP_Reduced)==0 ); - memcpy(zAlloc, p, nNewSize); + memmove(zAlloc, p, nNewSize); }else{ u32 nSize = (u32)exprStructSize(p); - memcpy(zAlloc, p, nSize); + memmove(zAlloc, p, nSize); if( nSizeu.zToken string, if any. */ if( nToken ){ char *zToken = pNew->u.zToken = (char*)&zAlloc[nNewSize]; - memcpy(zToken, p->u.zToken, nToken); + memmove(zToken, p->u.zToken, nToken); } if( 0==((p->flags|pNew->flags) & (EP_TokenOnly|EP_Leaf)) ){ @@ -98803,7 +98803,7 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){ assert( db->mallocFailed ); goto exit_begin_add_column; } - memcpy(pNew->aCol, pTab->aCol, sizeof(Column)*pNew->nCol); + memmove(pNew->aCol, pTab->aCol, sizeof(Column)*pNew->nCol); for(i=0; inCol; i++){ Column *pCol = &pNew->aCol[i]; pCol->zName = sqlite3DbStrDup(db, pCol->zName); @@ -99151,7 +99151,7 @@ static void sampleSetRowid(sqlite3 *db, Stat4Sample *p, int n, const u8 *pData){ p->u.aRowid = sqlite3DbMallocRawNN(db, n); if( p->u.aRowid ){ p->nRowid = n; - memcpy(p->u.aRowid, pData, n); + memmove(p->u.aRowid, pData, n); }else{ p->nRowid = 0; } @@ -99178,9 +99178,9 @@ static void sampleCopy(Stat4Accum *p, Stat4Sample *pTo, Stat4Sample *pFrom){ pTo->isPSample = pFrom->isPSample; pTo->iCol = pFrom->iCol; pTo->iHash = pFrom->iHash; - memcpy(pTo->anEq, pFrom->anEq, sizeof(tRowcnt)*p->nCol); - memcpy(pTo->anLt, pFrom->anLt, sizeof(tRowcnt)*p->nCol); - memcpy(pTo->anDLt, pFrom->anDLt, sizeof(tRowcnt)*p->nCol); + memmove(pTo->anEq, pFrom->anEq, sizeof(tRowcnt)*p->nCol); + memmove(pTo->anLt, pFrom->anLt, sizeof(tRowcnt)*p->nCol); + memmove(pTo->anDLt, pFrom->anDLt, sizeof(tRowcnt)*p->nCol); if( pFrom->nRowid ){ sampleSetRowid(p->db, pTo, pFrom->nRowid, pFrom->u.aRowid); }else{ @@ -99865,7 +99865,7 @@ static void analyzeOneTable( pStat1 = (Table*)sqlite3DbMallocZero(db, sizeof(Table) + 13); if( pStat1==0 ) return; pStat1->zName = (char*)&pStat1[1]; - memcpy(pStat1->zName, "sqlite_stat1", 13); + memmove(pStat1->zName, "sqlite_stat1", 13); pStat1->nCol = 3; pStat1->iPKey = -1; sqlite3VdbeAddOp4(pParse->pVdbe, OP_Noop, 0, 0, 0,(char*)pStat1,P4_DYNBLOB); @@ -100639,7 +100639,7 @@ static int loadStatTbl( return SQLITE_NOMEM_BKPT; } if( pSample->n ){ - memcpy(pSample->p, sqlite3_column_blob(pStmt, 4), pSample->n); + memmove(pSample->p, sqlite3_column_blob(pStmt, 4), pSample->n); } pIdx->nSample++; } @@ -100877,7 +100877,7 @@ static void attachFunc( if( db->aDb==db->aDbStatic ){ aNew = sqlite3DbMallocRawNN(db, sizeof(db->aDb[0])*3 ); if( aNew==0 ) return; - memcpy(aNew, db->aDb, sizeof(db->aDb[0])*2); + memmove(aNew, db->aDb, sizeof(db->aDb[0])*2); }else{ aNew = sqlite3DbRealloc(db, db->aDb, sizeof(db->aDb[0])*(db->nDb+1) ); if( aNew==0 ) return; @@ -101882,12 +101882,12 @@ SQLITE_PRIVATE void sqlite3NestedParse(Parse *pParse, const char *zFormat, ...){ return; /* A malloc must have failed */ } pParse->nested++; - memcpy(saveBuf, PARSE_TAIL(pParse), PARSE_TAIL_SZ); + memmove(saveBuf, PARSE_TAIL(pParse), PARSE_TAIL_SZ); memset(PARSE_TAIL(pParse), 0, PARSE_TAIL_SZ); sqlite3RunParser(pParse, zSql, &zErrMsg); sqlite3DbFree(db, zErrMsg); sqlite3DbFree(db, zSql); - memcpy(PARSE_TAIL(pParse), saveBuf, PARSE_TAIL_SZ); + memmove(PARSE_TAIL(pParse), saveBuf, PARSE_TAIL_SZ); pParse->nested--; } @@ -102124,7 +102124,7 @@ SQLITE_PRIVATE void sqlite3CollapseDatabaseArray(sqlite3 *db){ } db->nDb = j; if( db->nDb<=2 && db->aDb!=db->aDbStatic ){ - memcpy(db->aDbStatic, db->aDb, 2*sizeof(db->aDb[0])); + memmove(db->aDbStatic, db->aDb, 2*sizeof(db->aDb[0])); sqlite3DbFree(db, db->aDb); db->aDb = db->aDbStatic; } @@ -102687,7 +102687,7 @@ SQLITE_PRIVATE void sqlite3AddColumn(Parse *pParse, Token *pName, Token *pType){ } z = sqlite3DbMallocRaw(db, pName->n + pType->n + 2); if( z==0 ) return; - memcpy(z, pName->z, pName->n); + memmove(z, pName->z, pName->n); z[pName->n] = 0; sqlite3Dequote(z); for(i=0; inCol; i++){ @@ -102718,7 +102718,7 @@ SQLITE_PRIVATE void sqlite3AddColumn(Parse *pParse, Token *pName, Token *pType){ pCol->szEst = 1; }else{ zType = z + sqlite3Strlen30(z) + 1; - memcpy(zType, pType->z, pType->n); + memmove(zType, pType->z, pType->n); zType[pType->n] = 0; sqlite3Dequote(zType); pCol->affinity = sqlite3AffinityType(zType, &pCol->szEst); @@ -103216,7 +103216,7 @@ static char *createTableStmt(sqlite3 *db, Table *p){ len = sqlite3Strlen30(zType); assert( pCol->affinity==SQLITE_AFF_BLOB || pCol->affinity==sqlite3AffinityType(zType, 0) ); - memcpy(&zStmt[k], zType, len); + memmove(&zStmt[k], zType, len); k += len; assert( k<=n ); } @@ -103236,13 +103236,13 @@ static int resizeIndexObject(sqlite3 *db, Index *pIdx, int N){ nByte = (sizeof(char*) + sizeof(i16) + 1)*N; zExtra = sqlite3DbMallocZero(db, nByte); if( zExtra==0 ) return SQLITE_NOMEM_BKPT; - memcpy(zExtra, pIdx->azColl, sizeof(char*)*pIdx->nColumn); + memmove(zExtra, pIdx->azColl, sizeof(char*)*pIdx->nColumn); pIdx->azColl = (const char**)zExtra; zExtra += sizeof(char*)*N; - memcpy(zExtra, pIdx->aiColumn, sizeof(i16)*pIdx->nColumn); + memmove(zExtra, pIdx->aiColumn, sizeof(i16)*pIdx->nColumn); pIdx->aiColumn = (i16*)zExtra; zExtra += sizeof(i16)*N; - memcpy(zExtra, pIdx->aSortOrder, pIdx->nColumn); + memmove(zExtra, pIdx->aSortOrder, pIdx->nColumn); pIdx->aSortOrder = (u8*)zExtra; pIdx->nColumn = N; pIdx->isResized = 1; @@ -104295,7 +104295,7 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey( pFKey->pNextFrom = p->pFKey; z = (char*)&pFKey->aCol[nCol]; pFKey->zTo = z; - memcpy(z, pTo->z, pTo->n); + memmove(z, pTo->z, pTo->n); z[pTo->n] = 0; sqlite3Dequote(z); z += pTo->n+1; @@ -104323,7 +104323,7 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey( for(i=0; ia[i].zName); pFKey->aCol[i].zCol = z; - memcpy(z, pToCol->a[i].zName, n); + memmove(z, pToCol->a[i].zName, n); z[n] = 0; z += n+1; } @@ -104738,7 +104738,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex( assert( EIGHT_BYTE_ALIGNMENT(pIndex->azColl) ); pIndex->zName = zExtra; zExtra += nName + 1; - memcpy(pIndex->zName, zName, nName+1); + memmove(pIndex->zName, zName, nName+1); pIndex->pTable = pTab; pIndex->onError = (u8)onError; pIndex->uniqNotNull = onError!=OE_None; @@ -104811,7 +104811,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex( zColl = pListItem->pExpr->u.zToken; nColl = sqlite3Strlen30(zColl) + 1; assert( nExtra>=nColl ); - memcpy(zExtra, zColl, nColl); + memmove(zExtra, zColl, nColl); zColl = zExtra; zExtra += nColl; nExtra -= nColl; @@ -105090,7 +105090,7 @@ SQLITE_PRIVATE void sqlite3DefaultRowEst(Index *pIdx){ /* Estimate that a[1] is 10, a[2] is 9, a[3] is 8, a[4] is 7, a[5] is ** 6 and each subsequent value (if any) is 5. */ - memcpy(&a[1], aVal, nCopy*sizeof(LogEst)); + memmove(&a[1], aVal, nCopy*sizeof(LogEst)); for(i=nCopy+1; i<=pIdx->nKeyCol; i++){ a[i] = 23; assert( 23==sqlite3LogEst(5) ); } @@ -106135,7 +106135,7 @@ static int synthCollSeq(sqlite3 *db, CollSeq *pColl){ for(i=0; i<3; i++){ pColl2 = sqlite3FindCollSeq(db, aEnc[i], z, 0); if( pColl2->xCmp!=0 ){ - memcpy(pColl, pColl2, sizeof(CollSeq)); + memmove(pColl, pColl2, sizeof(CollSeq)); pColl->xDel = 0; /* Do not copy the destructor */ return SQLITE_OK; } @@ -106246,7 +106246,7 @@ static CollSeq *findCollSeqEntry( pColl[1].enc = SQLITE_UTF16LE; pColl[2].zName = (char*)&pColl[3]; pColl[2].enc = SQLITE_UTF16BE; - memcpy(pColl[0].zName, zName, nName); + memmove(pColl[0].zName, zName, nName); pDel = sqlite3HashInsert(&db->aCollSeq, pColl[0].zName, pColl); /* If a malloc() failure occurred in sqlite3HashInsert(), it will @@ -106487,7 +106487,7 @@ SQLITE_PRIVATE FuncDef *sqlite3FindFunction( pBest->zName = (const char*)&pBest[1]; pBest->nArg = (u16)nArg; pBest->funcFlags = enc; - memcpy((char*)&pBest[1], zName, nName+1); + memmove((char*)&pBest[1], zName, nName+1); pOther = (FuncDef*)sqlite3HashInsert(&db->aFunc, pBest->zName, pBest); if( pOther==pBest ){ sqlite3DbFree(db, pBest); @@ -108760,13 +108760,13 @@ static void replaceFunc( sqlite3_free(zOld); return; } - memcpy(&zOut[j], zRep, nRep); + memmove(&zOut[j], zRep, nRep); j += nRep; i += nPattern-1; } } assert( j+nStr-i+1==nOut ); - memcpy(&zOut[j], &zStr[i], nStr-i); + memmove(&zOut[j], &zStr[i], nStr-i); j += nStr - i; assert( j<=nOut ); zOut[j] = 0; @@ -109261,11 +109261,11 @@ SQLITE_PRIVATE int sqlite3IsLikeFunction(sqlite3 *db, Expr *pExpr, int *pIsNocas aWc[3] = zEscape[0]; } - /* The memcpy() statement assumes that the wildcard characters are + /* The memmove() statement assumes that the wildcard characters are ** the first three statements in the compareInfo structure. The ** asserts() that follow verify that assumption */ - memcpy(aWc, pDef->pUserData, 3); + memmove(aWc, pDef->pUserData, 3); assert( (char*)&likeInfoAlt == (char*)&likeInfoAlt.matchAll ); assert( &((char*)&likeInfoAlt)[1] == (char*)&likeInfoAlt.matchOne ); assert( &((char*)&likeInfoAlt)[2] == (char*)&likeInfoAlt.matchSet ); @@ -110712,7 +110712,7 @@ static Trigger *fkActionTrigger( if( pTrigger ){ pStep = pTrigger->step_list = (TriggerStep *)&pTrigger[1]; pStep->zTarget = (char *)&pStep[1]; - memcpy((char *)pStep->zTarget, zFrom, nFrom); + memmove((char *)pStep->zTarget, zFrom, nFrom); pStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE); pStep->pExprList = sqlite3ExprListDup(db, pList, EXPRDUP_REDUCE); @@ -114373,7 +114373,7 @@ static int sqlite3LoadExtension( sqlite3OsDlClose(pVfs, handle); return SQLITE_NOMEM_BKPT; } - memcpy(zAltEntry, "sqlite3_", 8); + memmove(zAltEntry, "sqlite3_", 8); for(iFile=ncFile-1; iFile>=0 && zFile[iFile]!='/'; iFile--){} iFile++; if( sqlite3_strnicmp(zFile+iFile, "lib", 3)==0 ) iFile += 3; @@ -114382,7 +114382,7 @@ static int sqlite3LoadExtension( zAltEntry[iEntry++] = (char)sqlite3UpperToLower[(unsigned)c]; } } - memcpy(zAltEntry+iEntry, "_init", 6); + memmove(zAltEntry+iEntry, "_init", 6); zEntry = zAltEntry; xInit = (sqlite3_loadext_entry)sqlite3OsDlSym(pVfs, handle, zEntry); } @@ -114418,7 +114418,7 @@ static int sqlite3LoadExtension( return SQLITE_NOMEM_BKPT; } if( db->nExtension>0 ){ - memcpy(aHandle, db->aExtension, sizeof(handle)*db->nExtension); + memmove(aHandle, db->aExtension, sizeof(handle)*db->nExtension); } sqlite3DbFree(db, db->aExtension); db->aExtension = aHandle; @@ -120487,7 +120487,7 @@ SQLITE_PRIVATE void sqlite3SelectAddColumnTypeAndCollation( n = sqlite3Strlen30(pCol->zName); pCol->zName = sqlite3DbReallocOrFree(db, pCol->zName, n+m+2); if( pCol->zName ){ - memcpy(&pCol->zName[n+1], zType, m+1); + memmove(&pCol->zName[n+1], zType, m+1); pCol->colFlags |= COLFLAG_HASTYPE; } } @@ -124827,7 +124827,7 @@ static int sqlite3_get_table_cb(void *pArg, int nCol, char **argv, char **colv){ int n = sqlite3Strlen30(argv[i])+1; z = sqlite3_malloc64( n ); if( z==0 ) goto malloc_failed; - memcpy(z, argv[i], n); + memmove(z, argv[i], n); } p->azResult[p->nData++] = z; } @@ -125332,7 +125332,7 @@ static TriggerStep *triggerStepAllocate( pTriggerStep = sqlite3DbMallocZero(db, sizeof(TriggerStep) + pName->n + 1); if( pTriggerStep ){ char *z = (char*)&pTriggerStep[1]; - memcpy(z, pName->z, pName->n); + memmove(z, pName->z, pName->n); sqlite3Dequote(z); pTriggerStep->zTarget = z; pTriggerStep->op = op; @@ -127407,7 +127407,7 @@ SQLITE_PRIVATE Module *sqlite3VtabCreateModule( }else{ Module *pDel; char *zCopy = (char *)(&pMod[1]); - memcpy(zCopy, zName, nName+1); + memmove(zCopy, zName, nName+1); pMod->zName = zCopy; pMod->pModule = pModule; pMod->pAux = pAux; @@ -128448,7 +128448,7 @@ SQLITE_PRIVATE FuncDef *sqlite3VtabOverloadFunction( } *pNew = *pDef; pNew->zName = (const char*)&pNew[1]; - memcpy((char*)&pNew[1], pDef->zName, sqlite3Strlen30(pDef->zName)+1); + memmove((char*)&pNew[1], pDef->zName, sqlite3Strlen30(pDef->zName)+1); pNew->xSFunc = xSFunc; pNew->pUserData = pArg; pNew->funcFlags |= SQLITE_FUNC_EPHEM; @@ -131012,10 +131012,10 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( if( pOrTab==0 ) return notReady; pOrTab->nAlloc = (u8)(nNotReady + 1); pOrTab->nSrc = pOrTab->nAlloc; - memcpy(pOrTab->a, pTabItem, sizeof(*pTabItem)); + memmove(pOrTab->a, pTabItem, sizeof(*pTabItem)); origSrc = pWInfo->pTabList->a; for(k=1; k<=nNotReady; k++){ - memcpy(&pOrTab->a[k], &origSrc[pLevel[k].iFrom], sizeof(pOrTab->a[k])); + memmove(&pOrTab->a[k], &origSrc[pLevel[k].iFrom], sizeof(pOrTab->a[k])); } }else{ pOrTab = pWInfo->pTabList; @@ -131448,7 +131448,7 @@ static int whereClauseInsert(WhereClause *pWC, Expr *p, u16 wtFlags){ pWC->a = pOld; return 0; } - memcpy(pWC->a, pOld, sizeof(pWC->a[0])*pWC->nTerm); + memmove(pWC->a, pOld, sizeof(pWC->a[0])*pWC->nTerm); if( pOld!=pWC->aStatic ){ sqlite3DbFree(db, pOld); } @@ -133021,7 +133021,7 @@ SQLITE_PRIVATE int sqlite3WhereBreakLabel(WhereInfo *pWInfo){ ** unable to use the ONEPASS optimization. */ SQLITE_PRIVATE int sqlite3WhereOkOnePass(WhereInfo *pWInfo, int *aiCur){ - memcpy(aiCur, pWInfo->aiCurOnePass, sizeof(int)*2); + memmove(aiCur, pWInfo->aiCurOnePass, sizeof(int)*2); #ifdef WHERETRACE_ENABLED if( sqlite3WhereTrace && pWInfo->eOnePass!=ONEPASS_OFF ){ sqlite3DebugPrintf("%s cursors: %d %d\n", @@ -133037,7 +133037,7 @@ SQLITE_PRIVATE int sqlite3WhereOkOnePass(WhereInfo *pWInfo, int *aiCur){ */ static void whereOrMove(WhereOrSet *pDest, WhereOrSet *pSrc){ pDest->n = pSrc->n; - memcpy(pDest->a, pSrc->a, pDest->n*sizeof(pDest->a[0])); + memmove(pDest->a, pSrc->a, pDest->n*sizeof(pDest->a[0])); } /* @@ -134615,7 +134615,7 @@ static void whereTermPrint(WhereTerm *pTerm, int iTerm){ }else{ char zType[4]; char zLeft[50]; - memcpy(zType, "...", 4); + memmove(zType, "...", 4); if( pTerm->wtFlags & TERM_VIRTUAL ) zType[0] = 'V'; if( pTerm->eOperator & WO_EQUIV ) zType[1] = 'E'; if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) zType[2] = 'L'; @@ -134752,7 +134752,7 @@ static int whereLoopResize(sqlite3 *db, WhereLoop *p, int n){ n = (n+7)&~7; paNew = sqlite3DbMallocRawNN(db, sizeof(p->aLTerm[0])*n); if( paNew==0 ) return SQLITE_NOMEM_BKPT; - memcpy(paNew, p->aLTerm, sizeof(p->aLTerm[0])*p->nLSlot); + memmove(paNew, p->aLTerm, sizeof(p->aLTerm[0])*p->nLSlot); if( p->aLTerm!=p->aLTermSpace ) sqlite3DbFreeNN(db, p->aLTerm); p->aLTerm = paNew; p->nLSlot = n; @@ -134768,8 +134768,8 @@ static int whereLoopXfer(sqlite3 *db, WhereLoop *pTo, WhereLoop *pFrom){ memset(&pTo->u, 0, sizeof(pTo->u)); return SQLITE_NOMEM_BKPT; } - memcpy(pTo, pFrom, WHERE_LOOP_XFER_SZ); - memcpy(pTo->aLTerm, pFrom->aLTerm, pTo->nLTerm*sizeof(pTo->aLTerm[0])); + memmove(pTo, pFrom, WHERE_LOOP_XFER_SZ); + memmove(pTo->aLTerm, pFrom->aLTerm, pTo->nLTerm*sizeof(pTo->aLTerm[0])); if( pFrom->wsFlags & WHERE_VIRTUALTABLE ){ pFrom->u.vtab.needFree = 0; }else if( (pFrom->wsFlags & WHERE_AUTO_INDEX)!=0 ){ @@ -137045,7 +137045,7 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ pTo->rCost = rCost; pTo->rUnsorted = rUnsorted; pTo->isOrdered = isOrdered; - memcpy(pTo->aLoop, pFrom->aLoop, sizeof(WhereLoop*)*iLoop); + memmove(pTo->aLoop, pFrom->aLoop, sizeof(WhereLoop*)*iLoop); pTo->aLoop[iLoop] = pWLoop; if( nTo>=mxChoice ){ mxI = 0; @@ -138230,7 +138230,7 @@ static void disableLookaside(Parse *pParse){ p->flags = EP_Leaf; p->iAgg = -1; p->u.zToken = (char*)&p[1]; - memcpy(p->u.zToken, t.z, t.n); + memmove(p->u.zToken, t.z, t.n); p->u.zToken[t.n] = 0; if( sqlite3Isquote(p->u.zToken[0]) ){ if( p->u.zToken[0]=='"' ) p->flags |= EP_DblQuoted; @@ -143641,7 +143641,7 @@ SQLITE_API int sqlite3_initialize(void){ double y; assert(sizeof(x)==8); assert(sizeof(x)==sizeof(y)); - memcpy(&y, &x, 8); + memmove(&y, &x, 8); assert( sqlite3IsNaN(y) ); } #endif @@ -146131,7 +146131,7 @@ SQLITE_PRIVATE int sqlite3ParseUri( zFile = sqlite3_malloc64(nUri+2); if( !zFile ) return SQLITE_NOMEM_BKPT; if( nUri ){ - memcpy(zFile, zUri, nUri); + memmove(zFile, zUri, nUri); } zFile[nUri] = '\0'; zFile[nUri+1] = '\0'; @@ -146244,7 +146244,7 @@ static int openDatabase( db->aDb = db->aDbStatic; assert( sizeof(db->aLimit)==sizeof(aHardLimit) ); - memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit)); + memmove(db->aLimit, aHardLimit, sizeof(db->aLimit)); db->aLimit[SQLITE_LIMIT_WORKER_THREADS] = SQLITE_DEFAULT_WORKER_THREADS; db->autoCommit = 1; db->nextAutovac = -1; @@ -147818,7 +147818,7 @@ SQLITE_PRIVATE void sqlite3ConnectionUnlocked(sqlite3 *db){ /* The aArg[] array needs to grow. */ void **pNew = (void **)sqlite3Malloc(nArg*sizeof(void *)*2); if( pNew ){ - memcpy(pNew, aArg, nArg*sizeof(void *)); + memmove(pNew, aArg, nArg*sizeof(void *)); sqlite3_free(aDyn); aDyn = aArg = pNew; }else{ @@ -149880,7 +149880,7 @@ static int fts3ContentColumns( for(i=0; imxSavepoint = -1 ); p->aIndex = (struct Fts3Index *)&p->azColumn[nCol]; - memcpy(p->aIndex, aIndex, sizeof(struct Fts3Index) * nIndex); + memmove(p->aIndex, aIndex, sizeof(struct Fts3Index) * nIndex); p->nIndex = nIndex; for(i=0; iaIndex[i].hPending, FTS3_HASH_STRING, 1); @@ -150187,10 +150187,10 @@ static int fts3InitVtab( /* Fill in the zName and zDb fields of the vtab structure. */ zCsr = (char *)&p->abNotindexed[nCol]; p->zName = zCsr; - memcpy(zCsr, argv[2], nName); + memmove(zCsr, argv[2], nName); zCsr += nName; p->zDb = zCsr; - memcpy(zCsr, argv[1], nDb); + memmove(zCsr, argv[1], nDb); zCsr += nDb; /* Fill in the azColumn array */ @@ -150199,7 +150199,7 @@ static int fts3InitVtab( int n = 0; z = (char *)sqlite3Fts3NextToken(aCol[iCol], &n); if( n>0 ){ - memcpy(zCsr, z, n); + memmove(zCsr, z, n); } zCsr[n] = '\0'; sqlite3Fts3Dequote(zCsr); @@ -150671,7 +150671,7 @@ static int fts3ScanInteriorNode( zBuffer = zNew; } assert( zBuffer ); - memcpy(&zBuffer[nPrefix], zCsr, nSuffix); + memmove(&zBuffer[nPrefix], zCsr, nSuffix); nBuffer = nPrefix + nSuffix; zCsr += nSuffix; @@ -150823,7 +150823,7 @@ static void fts3PoslistCopy(char **pp, char **ppPoslist){ if( pp ){ int n = (int)(pEnd - *ppPoslist); char *p = *pp; - memcpy(p, *ppPoslist, n); + memmove(p, *ppPoslist, n); p += n; *pp = p; } @@ -150861,7 +150861,7 @@ static void fts3ColumnlistCopy(char **pp, char **ppPoslist){ if( pp ){ int n = (int)(pEnd - *ppPoslist); char *p = *pp; - memcpy(p, *ppPoslist, n); + memmove(p, *ppPoslist, n); p += n; *pp = p; } @@ -151560,7 +151560,7 @@ static int fts3TermSelectMerge( ){ if( pTS->aaOutput[0]==0 ){ /* If this is the first term selected, copy the doclist to the output - ** buffer using memcpy(). + ** buffer using memmove(). ** ** Add FTS3_VARINT_MAX bytes of unused space to the end of the ** allocation. This is so as to ensure that the buffer is big enough @@ -151578,7 +151578,7 @@ static int fts3TermSelectMerge( pTS->aaOutput[0] = sqlite3_malloc(nDoclist + FTS3_VARINT_MAX + 1); pTS->anOutput[0] = nDoclist; if( pTS->aaOutput[0] ){ - memcpy(pTS->aaOutput[0], aDoclist, nDoclist); + memmove(pTS->aaOutput[0], aDoclist, nDoclist); }else{ return SQLITE_NOMEM; } @@ -153396,7 +153396,7 @@ static int fts3EvalIncrPhraseNext( int nByte = a[p->nToken-1].nList; char *aDoclist = sqlite3_malloc(nByte+1); if( !aDoclist ) return SQLITE_NOMEM; - memcpy(aDoclist, a[p->nToken-1].pList, nByte+1); + memmove(aDoclist, a[p->nToken-1].pList, nByte+1); for(i=0; i<(p->nToken-1); i++){ if( a[i].bIgnore==0 ){ @@ -154867,8 +154867,8 @@ static int fts3auxConnectMethod( p->pFts3Tab->db = db; p->pFts3Tab->nIndex = 1; - memcpy((char *)p->pFts3Tab->zDb, zDb, nDb); - memcpy((char *)p->pFts3Tab->zName, zFts3, nFts3); + memmove((char *)p->pFts3Tab->zDb, zDb, nDb); + memmove((char *)p->pFts3Tab->zName, zFts3, nFts3); sqlite3Fts3Dequote((char *)p->pFts3Tab->zName); *ppVtab = (sqlite3_vtab *)p; @@ -155525,7 +155525,7 @@ static int getNextToken( pRet->pPhrase->iColumn = iCol; pRet->pPhrase->aToken[0].n = nToken; pRet->pPhrase->aToken[0].z = (char *)&pRet->pPhrase[1]; - memcpy(pRet->pPhrase->aToken[0].z, zToken, nToken); + memmove(pRet->pPhrase->aToken[0].z, zToken, nToken); if( iEndpPhrase->aToken[0].isPrefix = 1; @@ -155640,7 +155640,7 @@ static int getNextString( pToken = &((Fts3Phrase *)(&p[1]))->aToken[ii]; memset(pToken, 0, sizeof(Fts3PhraseToken)); - memcpy(&zTemp[nTemp], zByte, nByte); + memmove(&zTemp[nTemp], zByte, nByte); nTemp += nByte; pToken->n = nByte; @@ -155668,7 +155668,7 @@ static int getNextString( zBuf = (char *)&p->pPhrase->aToken[nToken]; if( zTemp ){ - memcpy(zBuf, zTemp, nTemp); + memmove(zBuf, zTemp, nTemp); sqlite3_free(zTemp); }else{ assert( nTemp==0 ); @@ -156441,7 +156441,7 @@ static int queryTestTokenizer( sqlite3_bind_text(pStmt, 1, zName, -1, SQLITE_STATIC); if( SQLITE_ROW==sqlite3_step(pStmt) ){ if( sqlite3_column_type(pStmt, 0)==SQLITE_BLOB ){ - memcpy((void *)pp, sqlite3_column_blob(pStmt, 0), sizeof(*pp)); + memmove((void *)pp, sqlite3_column_blob(pStmt, 0), sizeof(*pp)); } } @@ -156990,7 +156990,7 @@ SQLITE_PRIVATE void *sqlite3Fts3HashInsert( fts3HashFree(new_elem); return data; } - memcpy((void*)new_elem->pKey, pKey, nKey); + memmove((void*)new_elem->pKey, pKey, nKey); }else{ new_elem->pKey = (void*)pKey; } @@ -158064,7 +158064,7 @@ int queryTokenizer( sqlite3_bind_text(pStmt, 1, zName, -1, SQLITE_STATIC); if( SQLITE_ROW==sqlite3_step(pStmt) ){ if( sqlite3_column_type(pStmt, 0)==SQLITE_BLOB ){ - memcpy((void *)pp, sqlite3_column_blob(pStmt, 0), sizeof(*pp)); + memmove((void *)pp, sqlite3_column_blob(pStmt, 0), sizeof(*pp)); } } @@ -158561,7 +158561,7 @@ static int fts3tokDequoteArray( for(i=0; izInput==0 ){ rc = SQLITE_NOMEM; }else{ - memcpy(pCsr->zInput, zByte, nByte); + memmove(pCsr->zInput, zByte, nByte); pCsr->zInput[nByte] = 0; rc = pTab->pMod->xOpen(pTab->pTok, pCsr->zInput, nByte, &pCsr->pCsr); if( rc==SQLITE_OK ){ @@ -160222,7 +160222,7 @@ static int fts3SegReaderNext( pReader->nTerm = fts3HashKeysize(pElem); aCopy = (char*)sqlite3_malloc(nCopy); if( !aCopy ) return SQLITE_NOMEM; - memcpy(aCopy, pList->aData, nCopy); + memmove(aCopy, pList->aData, nCopy); pReader->nNode = pReader->nDoclist = nCopy; pReader->aNode = pReader->aDoclist = aCopy; pReader->ppNextElem++; @@ -160281,7 +160281,7 @@ static int fts3SegReaderNext( rc = fts3SegReaderRequire(pReader, pNext, nSuffix+FTS3_VARINT_MAX); if( rc!=SQLITE_OK ) return rc; - memcpy(&pReader->zTerm[nPrefix], pNext, nSuffix); + memmove(&pReader->zTerm[nPrefix], pNext, nSuffix); pReader->nTerm = nPrefix+nSuffix; pNext += nSuffix; pNext += fts3GetVarint32(pNext, &pReader->nDoclist); @@ -160513,7 +160513,7 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderNew( pReader->aNode = (char *)&pReader[1]; pReader->rootOnly = 1; pReader->nNode = nRoot; - memcpy(pReader->aNode, zRoot, nRoot); + memmove(pReader->aNode, zRoot, nRoot); memset(&pReader->aNode[nRoot], 0, FTS3_NODE_PADDING); }else{ pReader->iCurrentBlock = iStartLeaf-1; @@ -160636,7 +160636,7 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderPending( memset(pReader, 0, nByte); pReader->iIdx = 0x7FFFFFFF; pReader->ppNextElem = (Fts3HashElem **)&pReader[1]; - memcpy(pReader->ppNextElem, aElem, nElem*sizeof(Fts3HashElem *)); + memmove(pReader->ppNextElem, aElem, nElem*sizeof(Fts3HashElem *)); } } @@ -160927,7 +160927,7 @@ static int fts3NodeAddTerm( } nData += sqlite3Fts3PutVarint(&pTree->aData[nData], nSuffix); - memcpy(&pTree->aData[nData], &zTerm[nPrefix], nSuffix); + memmove(&pTree->aData[nData], &zTerm[nPrefix], nSuffix); pTree->nData = nData + nSuffix; pTree->nEntry++; @@ -160941,7 +160941,7 @@ static int fts3NodeAddTerm( pTree->zMalloc = zNew; } pTree->zTerm = pTree->zMalloc; - memcpy(pTree->zTerm, zTerm, nTerm); + memmove(pTree->zTerm, zTerm, nTerm); pTree->nTerm = nTerm; }else{ pTree->zTerm = (char *)zTerm; @@ -161191,10 +161191,10 @@ static int fts3SegWriterAdd( /* Append the prefix-compressed term and doclist to the buffer. */ nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nPrefix); nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nSuffix); - memcpy(&pWriter->aData[nData], &zTerm[nPrefix], nSuffix); + memmove(&pWriter->aData[nData], &zTerm[nPrefix], nSuffix); nData += nSuffix; nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nDoclist); - memcpy(&pWriter->aData[nData], aDoclist, nDoclist); + memmove(&pWriter->aData[nData], aDoclist, nDoclist); pWriter->nData = nData + nDoclist; /* Save the current term so that it can be used to prefix-compress the next. @@ -161213,7 +161213,7 @@ static int fts3SegWriterAdd( pWriter->zTerm = zNew; } assert( pWriter->zTerm==pWriter->zMalloc ); - memcpy(pWriter->zTerm, zTerm, nTerm); + memmove(pWriter->zTerm, zTerm, nTerm); }else{ pWriter->zTerm = (char *)zTerm; } @@ -161521,7 +161521,7 @@ static int fts3MsrBufferData( pMsr->aBuffer = pNew; } - memcpy(pMsr->aBuffer, pList, nList); + memmove(pMsr->aBuffer, pList, nList); return SQLITE_OK; } @@ -161865,7 +161865,7 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderStep( nDoclist += sqlite3Fts3PutVarint(&pCsr->aBuffer[nDoclist], iDelta); iPrev = iDocid; if( isRequirePos ){ - memcpy(&pCsr->aBuffer[nDoclist], pList, nList); + memmove(&pCsr->aBuffer[nDoclist], pList, nList); nDoclist += nList; pCsr->aBuffer[nDoclist++] = '\0'; } @@ -162617,7 +162617,7 @@ static int nodeReaderNext(NodeReader *p){ blobGrowBuffer(&p->term, nPrefix+nSuffix, &rc); if( rc==SQLITE_OK ){ - memcpy(&p->term.a[nPrefix], &p->aNode[p->iOff], nSuffix); + memmove(&p->term.a[nPrefix], &p->aNode[p->iOff], nSuffix); p->term.n = nPrefix+nSuffix; p->iOff += nSuffix; if( p->iChild==0 ){ @@ -162721,10 +162721,10 @@ static int fts3IncrmergePush( pBlk->n += sqlite3Fts3PutVarint(&pBlk->a[pBlk->n], nPrefix); } pBlk->n += sqlite3Fts3PutVarint(&pBlk->a[pBlk->n], nSuffix); - memcpy(&pBlk->a[pBlk->n], &zTerm[nPrefix], nSuffix); + memmove(&pBlk->a[pBlk->n], &zTerm[nPrefix], nSuffix); pBlk->n += nSuffix; - memcpy(pNode->key.a, zTerm, nTerm); + memmove(pNode->key.a, zTerm, nTerm); pNode->key.n = nTerm; } }else{ @@ -162797,19 +162797,19 @@ static int fts3AppendToNode( nPrefix = fts3PrefixCompress(pPrev->a, pPrev->n, zTerm, nTerm); nSuffix = nTerm - nPrefix; - memcpy(pPrev->a, zTerm, nTerm); + memmove(pPrev->a, zTerm, nTerm); pPrev->n = nTerm; if( bFirst==0 ){ pNode->n += sqlite3Fts3PutVarint(&pNode->a[pNode->n], nPrefix); } pNode->n += sqlite3Fts3PutVarint(&pNode->a[pNode->n], nSuffix); - memcpy(&pNode->a[pNode->n], &zTerm[nPrefix], nSuffix); + memmove(&pNode->a[pNode->n], &zTerm[nPrefix], nSuffix); pNode->n += nSuffix; if( aDoclist ){ pNode->n += sqlite3Fts3PutVarint(&pNode->a[pNode->n], nDoclist); - memcpy(&pNode->a[pNode->n], aDoclist, nDoclist); + memmove(&pNode->a[pNode->n], aDoclist, nDoclist); pNode->n += nDoclist; } @@ -163140,7 +163140,7 @@ static int fts3IncrmergeLoad( pNode->iBlock = pWriter->iStart + pWriter->nLeafEst*nHeight; blobGrowBuffer(&pNode->block, MAX(nRoot, p->nNodeSize), &rc); if( rc==SQLITE_OK ){ - memcpy(pNode->block.a, aRoot, nRoot); + memmove(pNode->block.a, aRoot, nRoot); pNode->block.n = nRoot; } @@ -163152,7 +163152,7 @@ static int fts3IncrmergeLoad( while( reader.aNode && rc==SQLITE_OK ) rc = nodeReaderNext(&reader); blobGrowBuffer(&pNode->key, reader.term.n, &rc); if( rc==SQLITE_OK ){ - memcpy(pNode->key.a, reader.term.a, reader.term.n); + memmove(pNode->key.a, reader.term.a, reader.term.n); pNode->key.n = reader.term.n; if( i>0 ){ char *aBlock = 0; @@ -163162,7 +163162,7 @@ static int fts3IncrmergeLoad( rc = sqlite3Fts3ReadBlock(p, reader.iChild, &aBlock, &nBlock, 0); blobGrowBuffer(&pNode->block, MAX(nBlock, p->nNodeSize), &rc); if( rc==SQLITE_OK ){ - memcpy(pNode->block.a, aBlock, nBlock); + memmove(pNode->block.a, aBlock, nBlock); pNode->block.n = nBlock; } sqlite3_free(aBlock); @@ -163626,7 +163626,7 @@ static int fts3IncrmergeHintLoad(Fts3Table *p, Blob *pHint){ if( aHint ){ blobGrowBuffer(pHint, nHint, &rc); if( rc==SQLITE_OK ){ - memcpy(pHint->a, aHint, nHint); + memmove(pHint->a, aHint, nHint); pHint->n = nHint; } } @@ -164320,7 +164320,7 @@ SQLITE_PRIVATE int sqlite3Fts3DeferredTokenList( *pnData = p->pList->nData - nSkip; *ppData = pRet; - memcpy(pRet, &p->pList->aData[nSkip], *pnData); + memmove(pRet, &p->pList->aData[nSkip], *pnData); return SQLITE_OK; } @@ -164713,7 +164713,7 @@ static MatchinfoBuffer *fts3MIBufferNew(int nElem, const char *zMatchinfo){ pRet->aMatchinfo[1+nElem] = pRet->aMatchinfo[0] + sizeof(u32)*(nElem+1); pRet->nElem = nElem; pRet->zMatchinfo = ((char*)pRet) + nByte; - memcpy(pRet->zMatchinfo, zMatchinfo, nStr+1); + memmove(pRet->zMatchinfo, zMatchinfo, nStr+1); pRet->aRef[0] = 1; } @@ -164754,7 +164754,7 @@ static void (*fts3MIBufferAlloc(MatchinfoBuffer *p, u32 **paOut))(void*){ aOut = (u32*)sqlite3_malloc(p->nElem * sizeof(u32)); if( aOut ){ xRet = sqlite3_free; - if( p->bGlobal ) memcpy(aOut, &p->aMatchinfo[1], p->nElem*sizeof(u32)); + if( p->bGlobal ) memmove(aOut, &p->aMatchinfo[1], p->nElem*sizeof(u32)); } } @@ -164764,7 +164764,7 @@ static void (*fts3MIBufferAlloc(MatchinfoBuffer *p, u32 **paOut))(void*){ static void fts3MIBufferSetGlobal(MatchinfoBuffer *p){ p->bGlobal = 1; - memcpy(&p->aMatchinfo[2+p->nElem], &p->aMatchinfo[1], p->nElem*sizeof(u32)); + memmove(&p->aMatchinfo[2+p->nElem], &p->aMatchinfo[1], p->nElem*sizeof(u32)); } /* @@ -165188,7 +165188,7 @@ static int fts3StringAppend( assert( pStr->z!=0 && (pStr->nAlloc >= pStr->n+nAppend+1) ); /* Append the data to the string buffer. */ - memcpy(&pStr->z[pStr->n], zAppend, nAppend); + memmove(&pStr->z[pStr->n], zAppend, nAppend); pStr->n += nAppend; pStr->z[pStr->n] = '\0'; @@ -167485,15 +167485,15 @@ static void readCoord(u8 *p, RtreeCoord *pCoord){ static i64 readInt64(u8 *p){ #if SQLITE_BYTEORDER==1234 && MSVC_VERSION>=1300 u64 x; - memcpy(&x, p, 8); + memmove(&x, p, 8); return (i64)_byteswap_uint64(x); #elif SQLITE_BYTEORDER==1234 && GCC_VERSION>=4003000 u64 x; - memcpy(&x, p, 8); + memmove(&x, p, 8); return (i64)__builtin_bswap64(x); #elif SQLITE_BYTEORDER==4321 i64 x; - memcpy(&x, p, 8); + memmove(&x, p, 8); return x; #else return (i64)( @@ -167525,13 +167525,13 @@ static int writeCoord(u8 *p, RtreeCoord *pCoord){ assert( sizeof(u32)==4 ); #if SQLITE_BYTEORDER==1234 && GCC_VERSION>=4003000 i = __builtin_bswap32(pCoord->u); - memcpy(p, &i, 4); + memmove(p, &i, 4); #elif SQLITE_BYTEORDER==1234 && MSVC_VERSION>=1300 i = _byteswap_ulong(pCoord->u); - memcpy(p, &i, 4); + memmove(p, &i, 4); #elif SQLITE_BYTEORDER==4321 i = pCoord->u; - memcpy(p, &i, 4); + memmove(p, &i, 4); #else i = pCoord->u; p[0] = (i>>24)&0xFF; @@ -167544,12 +167544,12 @@ static int writeCoord(u8 *p, RtreeCoord *pCoord){ static int writeInt64(u8 *p, i64 i){ #if SQLITE_BYTEORDER==1234 && GCC_VERSION>=4003000 i = (i64)__builtin_bswap64((u64)i); - memcpy(p, &i, 8); + memmove(p, &i, 8); #elif SQLITE_BYTEORDER==1234 && MSVC_VERSION>=1300 i = (i64)_byteswap_uint64((u64)i); - memcpy(p, &i, 8); + memmove(p, &i, 8); #elif SQLITE_BYTEORDER==4321 - memcpy(p, &i, 8); + memmove(p, &i, 8); #else p[0] = (i>>56)&0xFF; p[1] = (i>>48)&0xFF; @@ -168107,7 +168107,7 @@ static int rtreeEof(sqlite3_vtab_cursor *cur){ #elif SQLITE_BYTEORDER==1234 #define RTREE_DECODE_COORD(eInt, a, r) { \ RtreeCoord c; /* Coordinate decoded */ \ - memcpy(&c.u,a,4); \ + memmove(&c.u,a,4); \ c.u = ((c.u>>24)&0xff)|((c.u>>8)&0xff00)| \ ((c.u&0xff)<<24)|((c.u&0xff00)<<8); \ r = eInt ? (sqlite3_rtree_dbl)c.i : (sqlite3_rtree_dbl)c.f; \ @@ -168115,7 +168115,7 @@ static int rtreeEof(sqlite3_vtab_cursor *cur){ #elif SQLITE_BYTEORDER==4321 #define RTREE_DECODE_COORD(eInt, a, r) { \ RtreeCoord c; /* Coordinate decoded */ \ - memcpy(&c.u,a,4); \ + memmove(&c.u,a,4); \ r = eInt ? (sqlite3_rtree_dbl)c.i : (sqlite3_rtree_dbl)c.f; \ } #else @@ -168697,7 +168697,7 @@ static int deserializeGeometry(sqlite3_value *pValue, RtreeConstraint *pCons){ if( !pInfo ) return SQLITE_NOMEM; memset(pInfo, 0, sizeof(*pInfo)); pBlob = (RtreeMatchArg*)&pInfo[1]; - memcpy(pBlob, pSrc, pSrc->iSize); + memmove(pBlob, pSrc, pSrc->iSize); pInfo->pContext = pBlob->cb.pContext; pInfo->nParam = pBlob->nParam; pInfo->aParam = pBlob->aParam; @@ -169021,7 +169021,7 @@ static int cellContains(Rtree *pRtree, RtreeCell *p1, RtreeCell *p2){ static RtreeDValue cellGrowth(Rtree *pRtree, RtreeCell *p, RtreeCell *pCell){ RtreeDValue area; RtreeCell cell; - memcpy(&cell, p, sizeof(RtreeCell)); + memmove(&cell, p, sizeof(RtreeCell)); area = cellArea(pRtree, &cell); cellUnion(pRtree, &cell, pCell); return (cellArea(pRtree, &cell)-area); @@ -169203,7 +169203,7 @@ static void SortByDistance( SortByDistance(aLeft, nLeft, aDistance, aSpare); SortByDistance(aRight, nRight, aDistance, aSpare); - memcpy(aSpare, aLeft, sizeof(int)*nLeft); + memmove(aSpare, aLeft, sizeof(int)*nLeft); aLeft = aSpare; while( iLeftiNode==1 ){ @@ -169753,7 +169753,7 @@ static int Reinsert( for(ii=0; iinDim2 = pRtree->nDim*2; pRtree->nBytesPerCell = 8 + pRtree->nDim2*4; pRtree->eCoordType = (u8)eCoordType; - memcpy(pRtree->zDb, argv[1], nDb); - memcpy(pRtree->zName, argv[2], nName); + memmove(pRtree->zDb, argv[1], nDb); + memmove(pRtree->zName, argv[2], nName); /* Figure out the node size to use. */ rc = getNodeSize(db, pRtree, isCreate, pzErr); @@ -170776,7 +170776,7 @@ static u8 *rtreeCheckGetNode(RtreeCheck *pCheck, i64 iNode, int *pnNode){ if( pRet==0 ){ pCheck->rc = SQLITE_NOMEM; }else{ - memcpy(pRet, pNode, nNode); + memmove(pRet, pNode, nNode); *pnNode = nNode; } } @@ -171909,7 +171909,7 @@ static int icuCreate( if( n ){ p->zLocale = (char *)&p[1]; - memcpy(p->zLocale, argv[0], n); + memmove(p->zLocale, argv[0], n); } *ppTokenizer = (sqlite3_tokenizer *)p; @@ -173285,7 +173285,7 @@ static int rbuDeltaApply( /* ERROR: copy extends past end of input */ return -1; } - memcpy(zOut, &zSrc[ofst], cnt); + memmove(zOut, &zSrc[ofst], cnt); zOut += cnt; break; } @@ -173300,7 +173300,7 @@ static int rbuDeltaApply( /* ERROR: insert count exceeds size of delta */ return -1; } - memcpy(zOut, zDelta, cnt); + memmove(zOut, zDelta, cnt); zOut += cnt; zDelta += cnt; lenDelta -= cnt; @@ -173790,7 +173790,7 @@ static char *rbuStrndup(const char *zStr, int *pRc){ size_t nCopy = strlen(zStr) + 1; zRet = (char*)sqlite3_malloc64(nCopy); if( zRet ){ - memcpy(zRet, zStr, nCopy); + memmove(zRet, zStr, nCopy); }else{ *pRc = SQLITE_NOMEM; } @@ -173943,7 +173943,7 @@ static void rbuObjIterCacheIndexedCols(sqlite3rbu *p, RbuObjIter *pIter){ int bIndex = 0; if( p->rc==SQLITE_OK ){ - memcpy(pIter->abIndexed, pIter->abTblPk, sizeof(u8)*pIter->nTblCol); + memmove(pIter->abIndexed, pIter->abTblPk, sizeof(u8)*pIter->nTblCol); p->rc = prepareFreeAndCollectError(p->dbMain, &pList, &p->zErrmsg, sqlite3_mprintf("PRAGMA main.index_list = %Q", pIter->zTbl) ); @@ -174932,7 +174932,7 @@ static int rbuGetUpdateStmt( char *zUpdate = 0; pUp->zMask = (char*)&pUp[1]; - memcpy(pUp->zMask, zMask, pIter->nTblCol); + memmove(pUp->zMask, zMask, pIter->nTblCol); pUp->pNext = pIter->pRbuUpdate; pIter->pRbuUpdate = pUp; @@ -175085,9 +175085,9 @@ static void rbuOpenDatabase(sqlite3rbu *p, int *pbRetry){ ** the RBU db handle now. */ if( p->zState ){ rbuMPrintfExec(p, p->dbRbu, "ATTACH %Q AS stat", p->zState); - memcpy(p->zStateDb, "stat", 4); + memmove(p->zStateDb, "stat", 4); }else{ - memcpy(p->zStateDb, "main", 4); + memmove(p->zStateDb, "main", 4); } #if 0 @@ -176275,11 +176275,11 @@ static sqlite3rbu *openRbuHandle( int bRetry = 0; if( zTarget ){ p->zTarget = pCsr; - memcpy(p->zTarget, zTarget, nTarget+1); + memmove(p->zTarget, zTarget, nTarget+1); pCsr += nTarget+1; } p->zRbu = pCsr; - memcpy(p->zRbu, zRbu, nRbu+1); + memmove(p->zRbu, zRbu, nRbu+1); pCsr += nRbu+1; if( zState ){ p->zState = rbuMPrintf(p, "%s", zState); @@ -177283,7 +177283,7 @@ static int rbuVfsOpen( nCopy = strlen(zBase); zCopy = sqlite3_malloc64(nCopy+2); if( zCopy ){ - memcpy(zCopy, zBase, nCopy); + memmove(zCopy, zBase, nCopy); zCopy[nCopy-3] = 'o'; zCopy[nCopy] = '\0'; zCopy[nCopy+1] = '\0'; @@ -177540,12 +177540,12 @@ SQLITE_API int sqlite3rbu_create_vfs(const char *zName, const char *zParent){ rc = SQLITE_NOTFOUND; }else{ char *zSpace; - memcpy(&pNew->base, &vfs_template, sizeof(sqlite3_vfs)); + memmove(&pNew->base, &vfs_template, sizeof(sqlite3_vfs)); pNew->base.mxPathname = pParent->mxPathname; pNew->base.szOsFile = sizeof(rbu_file) + pParent->szOsFile; pNew->pRealVfs = pParent; pNew->base.zName = (const char*)(zSpace = (char*)&pNew[1]); - memcpy(zSpace, zName, nName); + memmove(zSpace, zName, nName); /* Allocate the mutex and register the new VFS (not as the default) */ pNew->mutex = sqlite3_mutex_alloc(SQLITE_MUTEX_RECURSIVE); @@ -178641,7 +178641,7 @@ static int dbpageUpdate( if( rc==SQLITE_OK ){ rc = sqlite3PagerWrite(pDbPage); if( rc==SQLITE_OK ){ - memcpy(sqlite3PagerGetData(pDbPage), + memmove(sqlite3PagerGetData(pDbPage), sqlite3_value_blob(argv[3]), szPage); } @@ -179062,7 +179062,7 @@ static int sessionSerializeValue( double r; assert( sizeof(double)==8 && sizeof(u64)==8 ); r = sqlite3_value_double(pValue); - memcpy(&i, &r, 8); + memmove(&i, &r, 8); } sessionPutI64(&aBuf[1], i); } @@ -179086,7 +179086,7 @@ static int sessionSerializeValue( if( aBuf ){ sessionVarintPut(&aBuf[1], n); - if( n ) memcpy(&aBuf[nVarint + 1], z, n); + if( n ) memmove(&aBuf[nVarint + 1], z, n); } nByte = 1 + nVarint + n; @@ -179192,7 +179192,7 @@ static int sessionPreupdateHash( }else{ double rVal = sqlite3_value_double(pVal); assert( sizeof(iVal)==8 && sizeof(rVal)==8 ); - memcpy(&iVal, &rVal, 8); + memmove(&iVal, &rVal, 8); } h = sessionHashAppendI64(h, iVal); }else if( eType==SQLITE_TEXT || eType==SQLITE_BLOB ){ @@ -179348,10 +179348,10 @@ static void sessionMergeRecord( int n1 = sessionSerialLen(a1); int n2 = sessionSerialLen(a2); if( *a2 ){ - memcpy(aOut, a2, n2); + memmove(aOut, a2, n2); aOut += n2; }else{ - memcpy(aOut, a1, n1); + memmove(aOut, a1, n1); aOut += n1; } a1 += n1; @@ -179446,7 +179446,7 @@ static int sessionMergeUpdate( aNew = sessionMergeValue(&aNew1, &aNew2, &nNew); if( pTab->abPK[i] || nOld!=nNew || memcmp(aOld, aNew, nNew) ){ if( pTab->abPK[i]==0 ) bRequired = 1; - memcpy(aOut, aOld, nOld); + memmove(aOut, aOld, nOld); aOut += nOld; }else{ *(aOut++) = '\0'; @@ -179474,7 +179474,7 @@ static int sessionMergeUpdate( ){ *(aOut++) = '\0'; }else{ - memcpy(aOut, aNew, nNew); + memmove(aOut, aNew, nNew); aOut += nNew; } } @@ -179536,7 +179536,7 @@ static int sessionPreupdateEqual( }else{ double rVal; assert( sizeof(iVal)==8 && sizeof(rVal)==8 ); - memcpy(&rVal, &iVal, 8); + memmove(&rVal, &iVal, 8); if( sqlite3_value_double(pVal)!=rVal ) return 0; } }else{ @@ -179695,7 +179695,7 @@ static int sessionTableInfo( abPK = (u8 *)pAlloc; pAlloc = &abPK[nDbCol]; if( pzTab ){ - memcpy(pAlloc, zThis, nThis+1); + memmove(pAlloc, zThis, nThis+1); *pzTab = (char *)pAlloc; pAlloc += nThis+1; } @@ -179705,7 +179705,7 @@ static int sessionTableInfo( int nName = sqlite3_column_bytes(pStmt, 1); const unsigned char *zName = sqlite3_column_text(pStmt, 1); if( zName==0 ) break; - memcpy(pAlloc, zName, nName+1); + memmove(pAlloc, zName, nName+1); azCol[i] = (char *)pAlloc; pAlloc += nName+1; abPK[i] = sqlite3_column_int(pStmt, 5); @@ -180357,7 +180357,7 @@ SQLITE_API int sqlite3session_create( pNew->db = db; pNew->zDb = (char *)&pNew[1]; pNew->bEnable = 1; - memcpy(pNew->zDb, zDb, nDb+1); + memmove(pNew->zDb, zDb, nDb+1); sessionPreupdateHooks(pNew); /* Add the new session object to the linked list of session objects @@ -180482,7 +180482,7 @@ SQLITE_API int sqlite3session_attach( SessionTable **ppTab; memset(pTab, 0, sizeof(SessionTable)); pTab->zName = (char *)&pTab[1]; - memcpy(pTab->zName, zName, nName+1); + memmove(pTab->zName, zName, nName+1); for(ppTab=&pSession->pTable; *ppTab; ppTab=&(*ppTab)->pNext); *ppTab = pTab; } @@ -180582,7 +180582,7 @@ static void sessionAppendBlob( int *pRc ){ if( nBlob>0 && 0==sessionBufferGrow(p, nBlob, pRc) ){ - memcpy(&p->aBuf[p->nBuf], aBlob, nBlob); + memmove(&p->aBuf[p->nBuf], aBlob, nBlob); p->nBuf += nBlob; } } @@ -180602,7 +180602,7 @@ static void sessionAppendStr( ){ int nStr = sqlite3Strlen30(zStr); if( 0==sessionBufferGrow(p, nStr, pRc) ){ - memcpy(&p->aBuf[p->nBuf], zStr, nStr); + memmove(&p->aBuf[p->nBuf], zStr, nStr); p->nBuf += nStr; } } @@ -180675,7 +180675,7 @@ static void sessionAppendCol( i = sqlite3_column_int64(pStmt, iCol); }else{ double r = sqlite3_column_double(pStmt, iCol); - memcpy(&i, &r, 8); + memmove(&i, &r, 8); } sessionPutI64(aBuf, i); sessionAppendBlob(p, aBuf, 8, pRc); @@ -180758,7 +180758,7 @@ static int sessionAppendUpdate( if( iVal==sqlite3_column_int64(pStmt, i) ) break; }else{ double dVal; - memcpy(&dVal, &iVal, 8); + memmove(&dVal, &iVal, 8); if( dVal==sqlite3_column_double(pStmt, i) ) break; } } @@ -180963,7 +180963,7 @@ static int sessionSelectBind( if( abPK[i] ){ double rVal; i64 iVal = sessionGetI64(a); - memcpy(&rVal, &iVal, 8); + memmove(&rVal, &iVal, 8); rc = sqlite3_bind_double(pSelect, i+1, rVal); } a += 8; @@ -181387,7 +181387,7 @@ static int sessionValueSetStr( ** error. Hence the code to create the copy externally. */ u8 *aCopy = sqlite3_malloc(nData+1); if( aCopy==0 ) return SQLITE_NOMEM; - memcpy(aCopy, aData, nData); + memmove(aCopy, aData, nData); sqlite3ValueSetStr(pVal, nData, (char*)aCopy, enc, sqlite3_free); return SQLITE_OK; } @@ -181457,7 +181457,7 @@ static int sessionReadRecord( sqlite3VdbeMemSetInt64(apOut[i], v); }else{ double d; - memcpy(&d, &v, 8); + memmove(&d, &v, 8); sqlite3VdbeMemSetDouble(apOut[i], d); } pIn->iNext += 8; @@ -181577,7 +181577,7 @@ static int sessionChangesetReadTblhdr(sqlite3_changeset_iter *p){ if( rc==SQLITE_OK ){ int iPK = sizeof(sqlite3_value*)*p->nCol*2; memset(p->tblhdr.aBuf, 0, iPK); - memcpy(&p->tblhdr.aBuf[iPK], &p->in.aData[p->in.iNext], nCopy); + memmove(&p->tblhdr.aBuf[iPK], &p->in.aData[p->in.iNext], nCopy); p->in.iNext += nCopy; } @@ -183105,7 +183105,7 @@ static int sessionChangeMerge( pNew->bIndirect = bIndirect; pNew->nRecord = nRec; pNew->aRecord = (u8*)&pNew[1]; - memcpy(pNew->aRecord, aRec, nRec); + memmove(pNew->aRecord, aRec, nRec); }else{ int op1 = pExist->op; @@ -183159,7 +183159,7 @@ static int sessionChangeMerge( assert( op2==SQLITE_INSERT ); pNew->op = SQLITE_UPDATE; if( bPatchset ){ - memcpy(aCsr, aRec, nRec); + memmove(aCsr, aRec, nRec); aCsr += nRec; }else{ if( 0==sessionMergeUpdate(&aCsr, pTab, bPatchset, aExist, 0,aRec,0) ){ @@ -183184,7 +183184,7 @@ static int sessionChangeMerge( assert( op1==SQLITE_UPDATE && op2==SQLITE_DELETE ); pNew->op = SQLITE_DELETE; if( bPatchset ){ - memcpy(aCsr, aRec, nRec); + memmove(aCsr, aRec, nRec); aCsr += nRec; }else{ sessionMergeRecord(&aCsr, pTab->nCol, aRec, aExist); @@ -183254,9 +183254,9 @@ static int sessionChangesetToHash( memset(pTab, 0, sizeof(SessionTable)); pTab->nCol = nCol; pTab->abPK = (u8*)&pTab[1]; - memcpy(pTab->abPK, abPK, nCol); + memmove(pTab->abPK, abPK, nCol); pTab->zName = (char*)&pTab->abPK[nCol]; - memcpy(pTab->zName, zNew, nNew+1); + memmove(pTab->zName, zNew, nNew+1); /* The new object must be linked on to the end of the list, not ** simply added to the start of it. This is to ensure that the @@ -183761,7 +183761,7 @@ static int jsonGrow(JsonString *p, u32 N){ jsonOom(p); return SQLITE_NOMEM; } - memcpy(zNew, p->zBuf, (size_t)p->nUsed); + memmove(zNew, p->zBuf, (size_t)p->nUsed); p->zBuf = zNew; p->bStatic = 0; }else{ @@ -183780,7 +183780,7 @@ static int jsonGrow(JsonString *p, u32 N){ */ static void jsonAppendRaw(JsonString *p, const char *zIn, u32 N){ if( (N+p->nUsed >= p->nAlloc) && jsonGrow(p,N)!=0 ) return; - memcpy(p->zBuf+p->nUsed, zIn, N); + memmove(p->zBuf+p->nUsed, zIn, N); p->nUsed += N; } @@ -184532,7 +184532,7 @@ static JsonParse *jsonParseCached( } memset(p, 0, sizeof(*p)); p->zJson = (char*)&p[1]; - memcpy((char*)p->zJson, zJson, nJson+1); + memmove((char*)p->zJson, zJson, nJson+1); if( jsonParse(p, pCtx, p->zJson) ){ sqlite3_free(p); return 0; @@ -185747,7 +185747,7 @@ static int jsonEachFilter( n = sqlite3_value_bytes(argv[0]); p->zJson = sqlite3_malloc64( n+1 ); if( p->zJson==0 ) return SQLITE_NOMEM; - memcpy(p->zJson, z, (size_t)n+1); + memmove(p->zJson, z, (size_t)n+1); if( jsonParse(&p->sParse, 0, p->zJson) ){ int rc = SQLITE_NOMEM; if( p->sParse.oom==0 ){ @@ -185769,7 +185769,7 @@ static int jsonEachFilter( n = sqlite3_value_bytes(argv[1]); p->zRoot = sqlite3_malloc64( n+1 ); if( p->zRoot==0 ) return SQLITE_NOMEM; - memcpy(p->zRoot, zRoot, (size_t)n+1); + memmove(p->zRoot, zRoot, (size_t)n+1); if( zRoot[0]!='$' ){ zErr = zRoot; }else{ @@ -189533,7 +189533,7 @@ static void sqlite3Fts5BufferAppendBlob( assert_nc( *pRc || nData>=0 ); if( nData ){ if( fts5BufferGrow(pRc, pBuf, nData) ) return; - memcpy(&pBuf->p[pBuf->n], pData, nData); + memmove(&pBuf->p[pBuf->n], pData, nData); pBuf->n += nData; } } @@ -189737,7 +189737,7 @@ static char *sqlite3Fts5Strndup(int *pRc, const char *pIn, int nIn){ } zRet = (char*)sqlite3_malloc(nIn+1); if( zRet ){ - memcpy(zRet, pIn, nIn); + memmove(zRet, pIn, nIn); zRet[nIn] = '\0'; }else{ *pRc = SQLITE_NOMEM; @@ -189832,7 +189832,7 @@ static int sqlite3Fts5TermsetAdd( pEntry->pTerm = (char*)&pEntry[1]; pEntry->nTerm = nTerm; pEntry->iIdx = iIdx; - memcpy(pEntry->pTerm, pTerm, nTerm); + memmove(pEntry->pTerm, pTerm, nTerm); pEntry->pNext = p->apHash[hash]; p->apHash[hash] = pEntry; } @@ -190172,7 +190172,7 @@ static int fts5ConfigParseSpecial( p = fts5ConfigSkipBareword(p2); } if( p ){ - memcpy(pSpace, p2, p-p2); + memmove(pSpace, p2, p-p2); azArg[nArg] = pSpace; sqlite3Fts5Dequote(pSpace); pSpace += (p - p2) + 1; @@ -190294,7 +190294,7 @@ static const char *fts5ConfigGobbleWord( if( zOut==0 ){ *pRc = SQLITE_NOMEM; }else{ - memcpy(zOut, zIn, nIn+1); + memmove(zOut, zIn, nIn+1); if( fts5_isopenquote(zOut[0]) ){ int ii = fts5Dequote(zOut); zRet = &zIn[ii]; @@ -190638,7 +190638,7 @@ static int sqlite3Fts5ConfigParseRank( if( p ){ zRank = sqlite3Fts5MallocZero(&rc, 1 + p - pRank); - if( zRank ) memcpy(zRank, pRank, p-pRank); + if( zRank ) memmove(zRank, pRank, p-pRank); }else{ rc = SQLITE_ERROR; } @@ -190658,7 +190658,7 @@ static int sqlite3Fts5ConfigParseRank( rc = SQLITE_ERROR; }else{ zRankArgs = sqlite3Fts5MallocZero(&rc, 1 + p - pArgs); - if( zRankArgs ) memcpy(zRankArgs, pArgs, p-pArgs); + if( zRankArgs ) memmove(zRankArgs, pArgs, p-pArgs); } } } @@ -191182,7 +191182,7 @@ static int fts5ExprSynonymList( rc = SQLITE_NOMEM; goto synonym_poslist_out; } - memcpy(aNew, aIter, sizeof(Fts5PoslistReader) * nIter); + memmove(aNew, aIter, sizeof(Fts5PoslistReader) * nIter); nAlloc = nAlloc*2; if( aIter!=aStatic ) sqlite3_free(aIter); aIter = aNew; @@ -192383,7 +192383,7 @@ static int fts5ParseTokenize( }else{ memset(pSyn, 0, nByte); pSyn->zTerm = ((char*)pSyn) + sizeof(Fts5ExprTerm) + sizeof(Fts5Buffer); - memcpy(pSyn->zTerm, pToken, nToken); + memmove(pSyn->zTerm, pToken, nToken); pSyn->pSynonym = pPhrase->aTerm[pPhrase->nTerm-1].pSynonym; pPhrase->aTerm[pPhrase->nTerm-1].pSynonym = pSyn; } @@ -192539,7 +192539,7 @@ static int sqlite3Fts5ExprClonePhrase( int nByte = sizeof(Fts5Colset) + (pColsetOrig->nCol-1) * sizeof(int); Fts5Colset *pColset = (Fts5Colset*)sqlite3Fts5MallocZero(&rc, nByte); if( pColset ){ - memcpy(pColset, pColsetOrig, nByte); + memmove(pColset, pColsetOrig, nByte); } pNew->pRoot->pNear->pColset = pColset; } @@ -192756,7 +192756,7 @@ static Fts5Colset *fts5CloneColset(int *pRc, Fts5Colset *pOrig){ int nByte = sizeof(Fts5Colset) + (pOrig->nCol-1) * sizeof(int); pRet = (Fts5Colset*)sqlite3Fts5MallocZero(pRc, nByte); if( pRet ){ - memcpy(pRet, pOrig, nByte); + memmove(pRet, pOrig, nByte); } }else{ pRet = 0; @@ -192884,7 +192884,7 @@ static void fts5ExprAssignXNext(Fts5ExprNode *pNode){ static void fts5ExprAddChildren(Fts5ExprNode *p, Fts5ExprNode *pSub){ if( p->eType!=FTS5_NOT && pSub->eType==p->eType ){ int nByte = sizeof(Fts5ExprNode*) * pSub->nChild; - memcpy(&p->apChild[p->nChild], pSub->apChild, nByte); + memmove(&p->apChild[p->nChild], pSub->apChild, nByte); p->nChild += pSub->nChild; sqlite3_free(pSub); }else{ @@ -193940,7 +193940,7 @@ static int sqlite3Fts5HashWrite( p->nAlloc = nByte; zKey = fts5EntryKey(p); zKey[0] = bByte; - memcpy(&zKey[1], pToken, nToken); + memmove(&zKey[1], pToken, nToken); assert( iHash==fts5HashKey(pHash->nSlot, (u8*)zKey, nToken+1) ); p->nKey = nToken; zKey[nToken+1] = '\0'; @@ -195298,7 +195298,7 @@ static int fts5StructureCountSegments(Fts5Structure *pStruct){ #define fts5BufferSafeAppendBlob(pBuf, pBlob, nBlob) { \ assert( (pBuf)->nSpace>=((pBuf)->n+nBlob) ); \ - memcpy(&(pBuf)->p[(pBuf)->n], pBlob, nBlob); \ + memmove(&(pBuf)->p[(pBuf)->n], pBlob, nBlob); \ (pBuf)->n += nBlob; \ } @@ -195396,7 +195396,7 @@ static void fts5StructurePromoteTo( if( sz>szPromote ) return; fts5StructureExtendLevel(&p->rc, pStruct, iPromote, 1, 1); if( p->rc ) return; - memcpy(pOut->aSeg, &pLvl->aSeg[is], sizeof(Fts5StructureSegment)); + memmove(pOut->aSeg, &pLvl->aSeg[is], sizeof(Fts5StructureSegment)); pOut->nSeg++; pLvl->nSeg--; } @@ -199304,7 +199304,7 @@ static void fts5SetupPrefixIter( if( pData ){ pData->p = (u8*)&pData[1]; pData->nn = pData->szLeaf = doclist.n; - if( doclist.n ) memcpy(pData->p, doclist.p, doclist.n); + if( doclist.n ) memmove(pData->p, doclist.p, doclist.n); fts5MultiIterNew2(p, pData, bDesc, ppIter); } fts5BufferFree(&doclist); @@ -199543,7 +199543,7 @@ static int sqlite3Fts5IndexQuery( if( sqlite3Fts5BufferSize(&p->rc, &buf, nToken+1)==0 ){ int iIdx = 0; /* Index to search */ - if( nToken ) memcpy(&buf.p[1], pToken, nToken); + if( nToken ) memmove(&buf.p[1], pToken, nToken); /* Figure out which index to search and set iIdx accordingly. If this ** is a prefix query for which there is no prefix index, set iIdx to @@ -200474,7 +200474,7 @@ static void fts5DecodeFunction( nSpace = n + FTS5_DATA_ZERO_PADDING; a = (u8*)sqlite3Fts5MallocZero(&rc, nSpace); if( a==0 ) goto decode_out; - memcpy(a, aBlob, n); + memmove(a, aBlob, n); fts5DecodeRowid(iRowid, &iSegid, &bDlidx, &iHeight, &iPgno); @@ -203162,7 +203162,7 @@ static int fts5CreateAux( if( pAux ){ memset(pAux, 0, nByte); pAux->zFunc = (char*)&pAux[1]; - memcpy(pAux->zFunc, zName, nName); + memmove(pAux->zFunc, zName, nName); pAux->pGlobal = pGlobal; pAux->pUserData = pUserData; pAux->xFunc = xFunc; @@ -203200,7 +203200,7 @@ static int fts5CreateTokenizer( if( pNew ){ memset(pNew, 0, nByte); pNew->zName = (char*)&pNew[1]; - memcpy(pNew->zName, zName, nName); + memmove(pNew->zName, zName, nName); pNew->pUserData = pUserData; pNew->x = *pTokenizer; pNew->xDestroy = xDestroy; @@ -204660,7 +204660,7 @@ static int fts5AsciiCreate( }else{ int i; memset(p, 0, sizeof(AsciiTokenizer)); - memcpy(p->aTokenChar, aAsciiTokenChar, sizeof(aAsciiTokenChar)); + memmove(p->aTokenChar, aAsciiTokenChar, sizeof(aAsciiTokenChar)); for(i=0; rc==SQLITE_OK && iaTokenChar, aAsciiTokenChar, sizeof(aAsciiTokenChar)); + memmove(p->aTokenChar, aAsciiTokenChar, sizeof(aAsciiTokenChar)); p->bRemoveDiacritic = 1; p->nFold = 64; p->aFold = sqlite3_malloc(p->nFold * sizeof(char)); @@ -205032,7 +205032,7 @@ static int fts5UnicodeTokenize( goto tokenize_done; } zOut = &aFold[zOut - p->aFold]; - memcpy(aFold, p->aFold, nFold); + memmove(aFold, p->aFold, nFold); sqlite3_free(p->aFold); p->aFold = aFold; p->nFold = nFold = nFold*2; @@ -205173,7 +205173,7 @@ static int fts5PorterApply(char *aBuf, int *pnBuf, PorterRule *aRule){ if( p->zSuffix ){ int nStem = nBuf - p->nSuffix; if( p->xCond==0 || p->xCond(aBuf, nStem) ){ - memcpy(&aBuf[nStem], p->zOutput, p->nOutput); + memmove(&aBuf[nStem], p->zOutput, p->nOutput); *pnBuf = nStem + p->nOutput; ret = p - aRule; } @@ -205412,7 +205412,7 @@ static int fts5PorterStep1B2(char *aBuf, int *pnBuf){ case 'a': if( nBuf>2 && 0==memcmp("at", &aBuf[nBuf-2], 2) ){ - memcpy(&aBuf[nBuf-2], "ate", 3); + memmove(&aBuf[nBuf-2], "ate", 3); *pnBuf = nBuf - 2 + 3; ret = 1; } @@ -205420,7 +205420,7 @@ static int fts5PorterStep1B2(char *aBuf, int *pnBuf){ case 'b': if( nBuf>2 && 0==memcmp("bl", &aBuf[nBuf-2], 2) ){ - memcpy(&aBuf[nBuf-2], "ble", 3); + memmove(&aBuf[nBuf-2], "ble", 3); *pnBuf = nBuf - 2 + 3; ret = 1; } @@ -205428,7 +205428,7 @@ static int fts5PorterStep1B2(char *aBuf, int *pnBuf){ case 'i': if( nBuf>2 && 0==memcmp("iz", &aBuf[nBuf-2], 2) ){ - memcpy(&aBuf[nBuf-2], "ize", 3); + memmove(&aBuf[nBuf-2], "ize", 3); *pnBuf = nBuf - 2 + 3; ret = 1; } @@ -205447,12 +205447,12 @@ static int fts5PorterStep2(char *aBuf, int *pnBuf){ case 'a': if( nBuf>7 && 0==memcmp("ational", &aBuf[nBuf-7], 7) ){ if( fts5Porter_MGt0(aBuf, nBuf-7) ){ - memcpy(&aBuf[nBuf-7], "ate", 3); + memmove(&aBuf[nBuf-7], "ate", 3); *pnBuf = nBuf - 7 + 3; } }else if( nBuf>6 && 0==memcmp("tional", &aBuf[nBuf-6], 6) ){ if( fts5Porter_MGt0(aBuf, nBuf-6) ){ - memcpy(&aBuf[nBuf-6], "tion", 4); + memmove(&aBuf[nBuf-6], "tion", 4); *pnBuf = nBuf - 6 + 4; } } @@ -205461,12 +205461,12 @@ static int fts5PorterStep2(char *aBuf, int *pnBuf){ case 'c': if( nBuf>4 && 0==memcmp("enci", &aBuf[nBuf-4], 4) ){ if( fts5Porter_MGt0(aBuf, nBuf-4) ){ - memcpy(&aBuf[nBuf-4], "ence", 4); + memmove(&aBuf[nBuf-4], "ence", 4); *pnBuf = nBuf - 4 + 4; } }else if( nBuf>4 && 0==memcmp("anci", &aBuf[nBuf-4], 4) ){ if( fts5Porter_MGt0(aBuf, nBuf-4) ){ - memcpy(&aBuf[nBuf-4], "ance", 4); + memmove(&aBuf[nBuf-4], "ance", 4); *pnBuf = nBuf - 4 + 4; } } @@ -205475,7 +205475,7 @@ static int fts5PorterStep2(char *aBuf, int *pnBuf){ case 'e': if( nBuf>4 && 0==memcmp("izer", &aBuf[nBuf-4], 4) ){ if( fts5Porter_MGt0(aBuf, nBuf-4) ){ - memcpy(&aBuf[nBuf-4], "ize", 3); + memmove(&aBuf[nBuf-4], "ize", 3); *pnBuf = nBuf - 4 + 3; } } @@ -205484,7 +205484,7 @@ static int fts5PorterStep2(char *aBuf, int *pnBuf){ case 'g': if( nBuf>4 && 0==memcmp("logi", &aBuf[nBuf-4], 4) ){ if( fts5Porter_MGt0(aBuf, nBuf-4) ){ - memcpy(&aBuf[nBuf-4], "log", 3); + memmove(&aBuf[nBuf-4], "log", 3); *pnBuf = nBuf - 4 + 3; } } @@ -205493,27 +205493,27 @@ static int fts5PorterStep2(char *aBuf, int *pnBuf){ case 'l': if( nBuf>3 && 0==memcmp("bli", &aBuf[nBuf-3], 3) ){ if( fts5Porter_MGt0(aBuf, nBuf-3) ){ - memcpy(&aBuf[nBuf-3], "ble", 3); + memmove(&aBuf[nBuf-3], "ble", 3); *pnBuf = nBuf - 3 + 3; } }else if( nBuf>4 && 0==memcmp("alli", &aBuf[nBuf-4], 4) ){ if( fts5Porter_MGt0(aBuf, nBuf-4) ){ - memcpy(&aBuf[nBuf-4], "al", 2); + memmove(&aBuf[nBuf-4], "al", 2); *pnBuf = nBuf - 4 + 2; } }else if( nBuf>5 && 0==memcmp("entli", &aBuf[nBuf-5], 5) ){ if( fts5Porter_MGt0(aBuf, nBuf-5) ){ - memcpy(&aBuf[nBuf-5], "ent", 3); + memmove(&aBuf[nBuf-5], "ent", 3); *pnBuf = nBuf - 5 + 3; } }else if( nBuf>3 && 0==memcmp("eli", &aBuf[nBuf-3], 3) ){ if( fts5Porter_MGt0(aBuf, nBuf-3) ){ - memcpy(&aBuf[nBuf-3], "e", 1); + memmove(&aBuf[nBuf-3], "e", 1); *pnBuf = nBuf - 3 + 1; } }else if( nBuf>5 && 0==memcmp("ousli", &aBuf[nBuf-5], 5) ){ if( fts5Porter_MGt0(aBuf, nBuf-5) ){ - memcpy(&aBuf[nBuf-5], "ous", 3); + memmove(&aBuf[nBuf-5], "ous", 3); *pnBuf = nBuf - 5 + 3; } } @@ -205522,17 +205522,17 @@ static int fts5PorterStep2(char *aBuf, int *pnBuf){ case 'o': if( nBuf>7 && 0==memcmp("ization", &aBuf[nBuf-7], 7) ){ if( fts5Porter_MGt0(aBuf, nBuf-7) ){ - memcpy(&aBuf[nBuf-7], "ize", 3); + memmove(&aBuf[nBuf-7], "ize", 3); *pnBuf = nBuf - 7 + 3; } }else if( nBuf>5 && 0==memcmp("ation", &aBuf[nBuf-5], 5) ){ if( fts5Porter_MGt0(aBuf, nBuf-5) ){ - memcpy(&aBuf[nBuf-5], "ate", 3); + memmove(&aBuf[nBuf-5], "ate", 3); *pnBuf = nBuf - 5 + 3; } }else if( nBuf>4 && 0==memcmp("ator", &aBuf[nBuf-4], 4) ){ if( fts5Porter_MGt0(aBuf, nBuf-4) ){ - memcpy(&aBuf[nBuf-4], "ate", 3); + memmove(&aBuf[nBuf-4], "ate", 3); *pnBuf = nBuf - 4 + 3; } } @@ -205541,22 +205541,22 @@ static int fts5PorterStep2(char *aBuf, int *pnBuf){ case 's': if( nBuf>5 && 0==memcmp("alism", &aBuf[nBuf-5], 5) ){ if( fts5Porter_MGt0(aBuf, nBuf-5) ){ - memcpy(&aBuf[nBuf-5], "al", 2); + memmove(&aBuf[nBuf-5], "al", 2); *pnBuf = nBuf - 5 + 2; } }else if( nBuf>7 && 0==memcmp("iveness", &aBuf[nBuf-7], 7) ){ if( fts5Porter_MGt0(aBuf, nBuf-7) ){ - memcpy(&aBuf[nBuf-7], "ive", 3); + memmove(&aBuf[nBuf-7], "ive", 3); *pnBuf = nBuf - 7 + 3; } }else if( nBuf>7 && 0==memcmp("fulness", &aBuf[nBuf-7], 7) ){ if( fts5Porter_MGt0(aBuf, nBuf-7) ){ - memcpy(&aBuf[nBuf-7], "ful", 3); + memmove(&aBuf[nBuf-7], "ful", 3); *pnBuf = nBuf - 7 + 3; } }else if( nBuf>7 && 0==memcmp("ousness", &aBuf[nBuf-7], 7) ){ if( fts5Porter_MGt0(aBuf, nBuf-7) ){ - memcpy(&aBuf[nBuf-7], "ous", 3); + memmove(&aBuf[nBuf-7], "ous", 3); *pnBuf = nBuf - 7 + 3; } } @@ -205565,17 +205565,17 @@ static int fts5PorterStep2(char *aBuf, int *pnBuf){ case 't': if( nBuf>5 && 0==memcmp("aliti", &aBuf[nBuf-5], 5) ){ if( fts5Porter_MGt0(aBuf, nBuf-5) ){ - memcpy(&aBuf[nBuf-5], "al", 2); + memmove(&aBuf[nBuf-5], "al", 2); *pnBuf = nBuf - 5 + 2; } }else if( nBuf>5 && 0==memcmp("iviti", &aBuf[nBuf-5], 5) ){ if( fts5Porter_MGt0(aBuf, nBuf-5) ){ - memcpy(&aBuf[nBuf-5], "ive", 3); + memmove(&aBuf[nBuf-5], "ive", 3); *pnBuf = nBuf - 5 + 3; } }else if( nBuf>6 && 0==memcmp("biliti", &aBuf[nBuf-6], 6) ){ if( fts5Porter_MGt0(aBuf, nBuf-6) ){ - memcpy(&aBuf[nBuf-6], "ble", 3); + memmove(&aBuf[nBuf-6], "ble", 3); *pnBuf = nBuf - 6 + 3; } } @@ -205594,7 +205594,7 @@ static int fts5PorterStep3(char *aBuf, int *pnBuf){ case 'a': if( nBuf>4 && 0==memcmp("ical", &aBuf[nBuf-4], 4) ){ if( fts5Porter_MGt0(aBuf, nBuf-4) ){ - memcpy(&aBuf[nBuf-4], "ic", 2); + memmove(&aBuf[nBuf-4], "ic", 2); *pnBuf = nBuf - 4 + 2; } } @@ -205611,12 +205611,12 @@ static int fts5PorterStep3(char *aBuf, int *pnBuf){ case 't': if( nBuf>5 && 0==memcmp("icate", &aBuf[nBuf-5], 5) ){ if( fts5Porter_MGt0(aBuf, nBuf-5) ){ - memcpy(&aBuf[nBuf-5], "ic", 2); + memmove(&aBuf[nBuf-5], "ic", 2); *pnBuf = nBuf - 5 + 2; } }else if( nBuf>5 && 0==memcmp("iciti", &aBuf[nBuf-5], 5) ){ if( fts5Porter_MGt0(aBuf, nBuf-5) ){ - memcpy(&aBuf[nBuf-5], "ic", 2); + memmove(&aBuf[nBuf-5], "ic", 2); *pnBuf = nBuf - 5 + 2; } } @@ -205641,7 +205641,7 @@ static int fts5PorterStep3(char *aBuf, int *pnBuf){ case 'z': if( nBuf>5 && 0==memcmp("alize", &aBuf[nBuf-5], 5) ){ if( fts5Porter_MGt0(aBuf, nBuf-5) ){ - memcpy(&aBuf[nBuf-5], "al", 2); + memmove(&aBuf[nBuf-5], "al", 2); *pnBuf = nBuf - 5 + 2; } } @@ -205660,7 +205660,7 @@ static int fts5PorterStep1B(char *aBuf, int *pnBuf){ case 'e': if( nBuf>3 && 0==memcmp("eed", &aBuf[nBuf-3], 3) ){ if( fts5Porter_MGt0(aBuf, nBuf-3) ){ - memcpy(&aBuf[nBuf-3], "ee", 2); + memmove(&aBuf[nBuf-3], "ee", 2); *pnBuf = nBuf - 3 + 2; } }else if( nBuf>2 && 0==memcmp("ed", &aBuf[nBuf-2], 2) ){ @@ -205723,7 +205723,7 @@ static int fts5PorterCb( if( nToken>FTS5_PORTER_MAX_TOKEN || nToken<3 ) goto pass_through; aBuf = p->aBuf; nBuf = nToken; - memcpy(aBuf, pToken, nBuf); + memmove(aBuf, pToken, nBuf); /* Step 1. */ fts5PorterStep1A(aBuf, &nBuf); @@ -206743,8 +206743,8 @@ static int fts5VocabInitVtab( pRet->db = db; pRet->zFts5Tbl = (char*)&pRet[1]; pRet->zFts5Db = &pRet->zFts5Tbl[nTab]; - memcpy(pRet->zFts5Tbl, zTab, nTab); - memcpy(pRet->zFts5Db, zDb, nDb); + memmove(pRet->zFts5Tbl, zTab, nTab); + memmove(pRet->zFts5Db, zDb, nDb); sqlite3Fts5Dequote(pRet->zFts5Tbl); sqlite3Fts5Dequote(pRet->zFts5Db); } @@ -207151,7 +207151,7 @@ static int fts5VocabFilterMethod( if( pCsr->zLeTerm==0 ){ rc = SQLITE_NOMEM; }else{ - memcpy(pCsr->zLeTerm, zCopy, pCsr->nLeTerm+1); + memmove(pCsr->zLeTerm, zCopy, pCsr->nLeTerm+1); } } } diff --git a/packages/prism/src/c/mp/mp_sw.c b/packages/prism/src/c/mp/mp_sw.c index dad3c3a01..5b48a1e8c 100644 --- a/packages/prism/src/c/mp/mp_sw.c +++ b/packages/prism/src/c/mp/mp_sw.c @@ -186,7 +186,7 @@ int pc_mpm_alloc_occ_switches_0(void) occ_switches = MALLOC(sizeof(SW_INS_PTR) * sw_tab_size); occ_switch_tab_size = sw_tab_size; - memcpy(occ_switches, switches, sizeof(SW_INS_PTR) * sw_tab_size); + memmove(occ_switches, switches, sizeof(SW_INS_PTR) * sw_tab_size); if (fix_init_order) { sort_occ_switches(); } diff --git a/packages/python/pyio.c b/packages/python/pyio.c index d748fac32..2eeb9ebd9 100644 --- a/packages/python/pyio.c +++ b/packages/python/pyio.c @@ -146,7 +146,7 @@ static bool getLine(StreamDesc *rl_iostream, int sno) { size_t size = strlen (myrl_line)+1; rl_iostream->u.irl.ptr = rl_iostream->u.irl.buf = (const unsigned char *)malloc(size); - memcpy((void *)rl_iostream->u.irl.buf, myrl_line, size); + memmove((void *)rl_iostream->u.irl.buf, myrl_line, size); return true; } diff --git a/packages/udi/utarray.h b/packages/udi/utarray.h index 0c1e59b5b..415652439 100644 --- a/packages/udi/utarray.h +++ b/packages/udi/utarray.h @@ -95,7 +95,7 @@ typedef struct { #define utarray_push_back(a,p) do { \ utarray_reserve(a,1); \ if ((a)->icd.copy) { (a)->icd.copy( _utarray_eltptr(a,(a)->i++), p); } \ - else { memcpy(_utarray_eltptr(a,(a)->i++), p, (a)->icd.sz); }; \ + else { memmove(_utarray_eltptr(a,(a)->i++), p, (a)->icd.sz); }; \ } while(0) #define utarray_pop_back(a) do { \ @@ -123,7 +123,7 @@ typedef struct { ((a)->i - (j))*((a)->icd.sz)); \ } \ if ((a)->icd.copy) { (a)->icd.copy( _utarray_eltptr(a,j), p); } \ - else { memcpy(_utarray_eltptr(a,j), p, (a)->icd.sz); }; \ + else { memmove(_utarray_eltptr(a,j), p, (a)->icd.sz); }; \ (a)->i++; \ } while(0) @@ -142,7 +142,7 @@ typedef struct { (a)->icd.copy(_utarray_eltptr(a,j+_ut_i), _utarray_eltptr(w,_ut_i)); \ } \ } else { \ - memcpy(_utarray_eltptr(a,j), _utarray_eltptr(w,0), \ + memmove(_utarray_eltptr(a,j), _utarray_eltptr(w,0), \ utarray_len(w)*((a)->icd.sz)); \ } \ (a)->i += utarray_len(w); \ diff --git a/packages/yap-lbfgs/liblbfgs-1.10/lib/lbfgs.c b/packages/yap-lbfgs/liblbfgs-1.10/lib/lbfgs.c index 30ffcf2ab..6fbd2242d 100644 --- a/packages/yap-lbfgs/liblbfgs-1.10/lib/lbfgs.c +++ b/packages/yap-lbfgs/liblbfgs-1.10/lib/lbfgs.c @@ -239,7 +239,7 @@ void lbfgs_free(lbfgsfloatval_t *x) void lbfgs_parameter_init(lbfgs_parameter_t *param) { - memcpy(param, &_defparam, sizeof(*param)); + memmove(param, &_defparam, sizeof(*param)); } int lbfgs( diff --git a/pl/protect.yap b/pl/protect.yap index 23f8a6a8f..0a21f1bba 100755 --- a/pl/protect.yap +++ b/pl/protect.yap @@ -48,6 +48,7 @@ '$new_system_predicate'(Name,Arity,M), sub_atom(Name,0,1,_, '$'), functor(P,Name,Arity), + writeln(M:P), '$hide_predicate'(P,M), fail. '$protect' :- diff --git a/swi/console/console.c b/swi/console/console.c index 141c00f46..19b487f9b 100755 --- a/swi/console/console.c +++ b/swi/console/console.c @@ -2225,7 +2225,7 @@ rlc_save_font_options(HFONT font, rlc_console_attr *attr) { LOGFONT lf; if ( GetObject(font, sizeof(lf), &lf) ) - { memcpy(attr->face_name, lf.lfFaceName, sizeof(attr->face_name)-1); + { memmove(attr->face_name, lf.lfFaceName, sizeof(attr->face_name)-1); attr->font_family = lf.lfPitchAndFamily; attr->font_size = lf.lfHeight; @@ -3803,7 +3803,7 @@ Dprint_lines(RlcData b, int from, int to) for( ; ; from = NextLine(b, from)) { TextLine tl = &b->lines[from]; - memcpy(buf, tl->text, tl->size); + memmove(buf, tl->text, tl->size); buf[tl->size] = EOS; Dprintf(_T("%03d: (0x%08x) \"%s\"\n"), from, tl->text, buf);