# std.elf: Fix read functions for 32-bit targets · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/1c2e65fe1de66e8ebb8953a67fe327bae3251f30)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: 1c2e65fe1de66e8ebb8953a67fe327bae3251f30

Requested commit: 1c2e65fe1de66e8ebb8953a67fe327bae3251f30

Commit: 1c2e65fe1de66e8ebb8953a67fe327bae3251f30

Tree: 5a56eecdda9296efaa9fb49d681aea7d5815092d

Author: Jay Petacat

Committer: Andrew Kelley

## Message

````
std.elf: Fix read functions for 32-bit targets

The buffer index was declared as `u64`, which overflows `usize` on a
32-bit target.

The following example program failed to compile for 32-bit targets:

```zig
const std = @import("std");

pub fn main() !void {
    const alloc = std.testing.allocator;
    const file = std.io.getStdIn();
    _ = try std.elf.readAllHeaders(alloc, file);
}
```

```
lib/zig/std/elf.zig:543:36: error: expected type 'usize', found 'u64'
        const len = file.pread(buf[i .. buf.len - i], offset + i) catch |err| switch (err) {
                                   ^
lib/zig/std/elf.zig:543:36: note: unsigned 32-bit int cannot represent all possible unsigned 64-bit values
        const len = file.pread(buf[i .. buf.len - i], offset + i) catch |err| switch (err) {
                                   ^
lib/zig/std/elf.zig:543:35: note: referenced here
        const len = file.pread(buf[i .. buf.len - i], offset + i) catch |err| switch (err) {
                                  ^
lib/zig/std/elf.zig:348:5: note: referenced here
    try preadNoEof(file, &hdr_buf, 0);
    ^
lib/zig/std/elf.zig:392:19: note: referenced here
        .header = try readHeader(file),
```

````

## Parents

- [488df7f1d1f7300bfb23134cc79fed2cef917ae2](https://git.cafe/gitcafe/zig/commit/488df7f1d1f7300bfb23134cc79fed2cef917ae2?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/1c2e65fe1de66e8ebb8953a67fe327bae3251f30?format=markdown)
