Skip to content

Commit ae72c71

Browse files
committed
have collapseRepeats return slice intead of just len
1 parent e9958e7 commit ae72c71

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

lib/std/mem.zig

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1917,7 +1917,7 @@ pub fn replaceScalar(comptime T: type, slice: []T, needle: T, replacement: T) vo
19171917
}
19181918

19191919
/// Collapse consecutive duplicate elements into one entry.
1920-
pub fn collapseRepeats(comptime T: type, slice: []T, elem: T) usize {
1920+
pub fn collapseRepeatsLen(comptime T: type, slice: []T, elem: T) usize {
19211921
if (slice.len == 0) return 0;
19221922
var write_idx: usize = 1;
19231923
var read_idx: usize = 1;
@@ -1930,11 +1930,15 @@ pub fn collapseRepeats(comptime T: type, slice: []T, elem: T) usize {
19301930
return write_idx;
19311931
}
19321932

1933+
/// Collapse consecutive duplicate elements into one entry.
1934+
pub fn collapseRepeats(comptime T: type, slice: []T, elem: T) []T {
1935+
return slice[0 .. collapseRepeatsLen(T, slice, elem)];
1936+
}
1937+
19331938
fn testCollapseRepeats(str: []const u8, elem: u8, expected: []const u8) !void {
19341939
const mutable = try std.testing.allocator.dupe(u8, str);
19351940
defer std.testing.allocator.free(mutable);
1936-
const actual = mutable[0..collapseRepeats(u8, mutable, elem)];
1937-
testing.expect(std.mem.eql(u8, actual, expected));
1941+
testing.expect(std.mem.eql(u8, collapseRepeats(u8, mutable, elem), expected));
19381942
}
19391943
test "collapseRepeats" {
19401944
try testCollapseRepeats("", '/', "");

lib/std/os/windows.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1676,7 +1676,7 @@ pub fn removeDotDirsSanitized(comptime T: type, path: []T) RemoveDotDirsError!us
16761676
/// Returns the length of the new path.
16771677
pub fn normalizePath(comptime T: type, path: []T) RemoveDotDirsError!usize {
16781678
mem.replaceScalar(T, path, '/', '\\');
1679-
const new_len = mem.collapseRepeats(T, path, '\\');
1679+
const new_len = mem.collapseRepeatsLen(T, path, '\\');
16801680

16811681
const prefix_len: usize = init: {
16821682
if (new_len >= 1 and path[0] == '\\') break :init 1;

0 commit comments

Comments
 (0)