Adding a string to itself causes the resulting length to be off by one
### Description

On Windows with gcc or clang, the following code:
```
proc main() = 
    for i in 0..1:
        var s = "TestString123"
        s.add s
        echo s

main()
```
gives the following output:
```
TestString123TestString123
TestString123TestString123T
```

So, if the same variable is used multiple times, the add operation will return a longer than expected string with a trailing character that was presumable part of the string at some point of the variable's lifetime.



### Nim Version

Nim Compiler Version 2.2.0 [Windows: amd64]

### Current Output

```text
TestString123TestString123
TestString123TestString123T
```

### Expected Output

```text
TestString123TestString123
TestString123TestString123
```

### Known Workarounds

I've worked around this by manually calling setLen to a correct length, but it really should be fixed properly.

### Additional Information

The problem seems to only exist on Windows. I've tested the code above with gcc and clang on amd64 with Nim 2.2.0 and devel, all of them produced invalid output.