nitg: Replace memcpy by memmove for safety.
authorLucas Bajolet <r4pass@hotmail.com>
Tue, 12 Aug 2014 18:56:07 +0000 (14:56 -0400)
committerLucas Bajolet <r4pass@hotmail.com>
Tue, 12 Aug 2014 18:56:07 +0000 (14:56 -0400)
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

src/abstract_compiler.nit
src/global_compiler.nit
src/separate_compiler.nit

index 720be46..eae9298 100644 (file)
@@ -2008,7 +2008,7 @@ redef class AMethPropdef
                                v.add("{arguments[0]}[{arguments[1]}]={arguments[2]};")
                                return
                        else if pname == "copy_to" then
-                               v.add("memcpy({arguments[1]}+{arguments[4]},{arguments[0]}+{arguments[3]},{arguments[2]});")
+                               v.add("memmove({arguments[1]}+{arguments[4]},{arguments[0]}+{arguments[3]},{arguments[2]});")
                                return
                        else if pname == "atoi" then
                                v.ret(v.new_expr("atoi({arguments[0]});", ret.as(not null)))
index 322fcda..ad2ddcf 100644 (file)
@@ -356,7 +356,7 @@ class GlobalCompilerVisitor
                        return
                else if pname == "copy_to" then
                        var recv1 = "((struct {arguments[1].mcasttype.c_name}*){arguments[1]})->values"
-                       self.add("memcpy({recv1},{recv},{arguments[2]}*sizeof({elttype.ctype}));")
+                       self.add("memmove({recv1},{recv},{arguments[2]}*sizeof({elttype.ctype}));")
                        return
                end
        end
index 273451f..4819806 100644 (file)
@@ -1644,7 +1644,7 @@ class SeparateCompilerVisitor
                        return
                else if pname == "copy_to" then
                        var recv1 = "((struct instance_{nclass.c_instance_name}*){arguments[1]})->values"
-                       self.add("memcpy({recv1}, {recv}, {arguments[2]}*sizeof({elttype.ctype}));")
+                       self.add("memmove({recv1}, {recv}, {arguments[2]}*sizeof({elttype.ctype}));")
                        return
                end
        end