Skip to content

Conversation

@ghuls
Copy link

@ghuls ghuls commented Dec 23, 2025

Fix "done" method of generators as before it would segfault in debug mode when getting the next element when the iterator was finished.

$ cat test_iter.codon
b = [1, 2, 3]

d = iter(b)
print(min(d))
print(d.done())
print(min(d))

$ /software/exaloop/codon/codon-0.19.4/bin/codon run test_iter.codon
1
Segmentation fault (core dumped)

$ /software/exaloop/codon/codon-0.19.4_done_fix/bin/codon run test_iter.codon
1
True
ValueError: min() arg is an empty sequence

Raised from: std.internal.builtin.min.0:0
/software/exaloop/codon/codon-0.19.4_pipe/lib/codon/stdlib/internal/builtin.codon:83:13

Backtrace:
  [0x7f9950a9986f] std.internal.builtin.min.0:0[Tuple[Generator[int]],Optional[NoneType],Optional[NoneType]].851 at /software/exaloop/codon/codon-0.19.4_pipe/lib/codon/stdlib/internal/builtin.codon:83:13
  [0x7f9950a9e8d2] main.0 at /software/exaloop/codon/test_iter.codon:6:7
Aborted (core dumped)

Fixes: #246

Fix "done" method of generators as before it would segfault in debug
mode when getting the next element when the iterator was finished.

    $ cat test_iter.codon
    b = [1, 2, 3]

    d = iter(b)
    print(min(d))
    print(d.done())
    print(min(d))

    $ /software/exaloop/codon/codon-0.19.4/bin/codon run test_iter.codon
    1
    Segmentation fault (core dumped)

    $ /software/exaloop/codon/codon-0.19.4_done_fix/bin/codon run test_iter.codon
    1
    True
    ValueError: min() arg is an empty sequence

    Raised from: std.internal.builtin.min.0:0
    /software/exaloop/codon/codon-0.19.4_pipe/lib/codon/stdlib/internal/builtin.codon:83:13

    Backtrace:
      [0x7f9950a9986f] std.internal.builtin.min.0:0[Tuple[Generator[int]],Optional[NoneType],Optional[NoneType]].851 at /software/exaloop/codon/codon-0.19.4_pipe/lib/codon/stdlib/internal/builtin.codon:83:13
      [0x7f9950a9e8d2] main.0 at /software/exaloop/codon/test_iter.codon:6:7
    Aborted (core dumped)

Fixes: exaloop#246
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Segmentation fault in invoking list(zip(,))

1 participant