summaryrefslogtreecommitdiffstats
path: root/libreport/src/lib/overlapping_strcpy.c
diff options
context:
space:
mode:
Diffstat (limited to 'libreport/src/lib/overlapping_strcpy.c')
-rw-r--r--libreport/src/lib/overlapping_strcpy.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/libreport/src/lib/overlapping_strcpy.c b/libreport/src/lib/overlapping_strcpy.c
new file mode 100644
index 00000000..3301024f
--- /dev/null
+++ b/libreport/src/lib/overlapping_strcpy.c
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
+ *
+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+ */
+#include "libreport.h"
+
+/* Like strcpy but can copy overlapping strings. */
+void overlapping_strcpy(char *dst, const char *src)
+{
+ /* Cheap optimization for dst == src case -
+ * better to have it here than in many callers.
+ */
+ if (dst != src)
+ {
+ while ((*dst = *src) != '\0')
+ {
+ dst++;
+ src++;
+ }
+ }
+}