Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

std.array.Appender needs a way to set/get the length #10351

Open
dlangBugzillaToGithub opened this issue Sep 22, 2018 · 1 comment
Open

std.array.Appender needs a way to set/get the length #10351

dlangBugzillaToGithub opened this issue Sep 22, 2018 · 1 comment

Comments

@dlangBugzillaToGithub
Copy link

johnnymarler (@marler8997) reported this on 2018-09-22T22:25:15Z

Transfered from https://issues.dlang.org/show_bug.cgi?id=19259

CC List

  • contact

Description

std.array.Appender needs a way to extend/add to the length of `data`.  See the following use case:

```
uint tryAppendFullPathNameImpl(const(wchar)* nullTerminatedPath, Appender!(wchar[]) builder)
{
    import core.sys.windows.winbase : GetFullPathNameW;
    auto prefixLength = builder.data.length;
    for (;;)
    {
        const result = GetFullPathNameW(nullTerminatedPath, builder.capacity - prefixLength,
            builder.data.ptr + prefixLength, null);
        if (result <= (builder.capacity - prefixLength))
        {
            // NO WAY TO DO THIS:
            //builder.overrideDataLength(prefixLength + result);
            return result;
        }
        builder.reserve(prefixLength + result);
    }
}
```

What's happening here is we are passing the Appender array to a C function that populates the array with our resuling "full path".  Note that this implementation is taken from .NET CoreFX:

https://github.com/dotnet/corefx/blob/1bff7880bfa949e8c5e46039808ec412640bbb5e/src/Common/src/CoreLib/System/IO/PathHelper.Windows.cs#L72

The problem is that once it's populated, we have no way of extending the length of the array after it was populated by the C function.
@dlangBugzillaToGithub
Copy link
Author

dlang-bot commented on 2022-04-16T14:09:39Z

@ljmf00 updated dlang/phobos pull request #8432 "feat(array): add .length property" fixing this issue:

- feat(array): add .length property
  
  This patch adds a .length property to either get and set the length of the
  managed array.
  
  Fix issue 19259.
  
  Reference: https://issues.dlang.org/show_bug.cgi?id=19259
  Signed-off-by: Luís Ferreira <contact@lsferreira.net>

https://github.com/dlang/phobos/pull/8432

@LightBender LightBender removed the P4 label Dec 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants