From d1a707df572e33c8674e196128760900ec488a7a Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sun, 15 May 2022 16:10:58 +0200 Subject: [PATCH] fix assigning a pointer (uword) to string not copying the correct memory --- .../prog8/compiler/astprocessing/StatementReorderer.kt | 8 ++------ examples/test.p8 | 9 ++++++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/compiler/src/prog8/compiler/astprocessing/StatementReorderer.kt b/compiler/src/prog8/compiler/astprocessing/StatementReorderer.kt index f44e06cda..27dd70eda 100644 --- a/compiler/src/prog8/compiler/astprocessing/StatementReorderer.kt +++ b/compiler/src/prog8/compiler/astprocessing/StatementReorderer.kt @@ -414,14 +414,10 @@ internal class StatementReorderer(val program: Program, private fun copyStringValue(assign: Assignment): List { val identifier = assign.target.identifier!! - val sourceIdent = assign.value as? IdentifierReference val strcopy = FunctionCallStatement(IdentifierReference(listOf("sys", "internal_stringcopy"), assign.position), mutableListOf( - if(sourceIdent!=null) - AddressOf(sourceIdent, assign.position) - else - assign.value, - AddressOf(identifier, assign.position) + assign.value as? IdentifierReference ?: assign.value, + identifier ), true, assign.position diff --git a/examples/test.p8 b/examples/test.p8 index 0a41ba65f..5b4753573 100644 --- a/examples/test.p8 +++ b/examples/test.p8 @@ -27,7 +27,14 @@ main { ubyte @shared value = inline_candidate() str name = "irmen123ABC" - str other = "zrmen123ABC" + str other = "zrmen123zzz" + + txt.print(name) + txt.nl() + name=other + txt.print(name) + txt.nl() + txt.nl() txt.print_ub(string.upper(name)) txt.print(name)