]> Repositorios git - scryer-prolog.git/commitdiff
FIXED: correct dereferencing in atom_codes/2 and number_codes/2.
authorMarkus Triska <[email protected]>
Mon, 29 May 2023 09:12:00 +0000 (11:12 +0200)
committerMarkus Triska <[email protected]>
Mon, 29 May 2023 09:43:56 +0000 (11:43 +0200)
This addresses #1818.

Test case:

    run :-
    length(Ls, L),
    portray_clause(L),
    maplist(=(X), Ls),
    X = Y,
    Y = 12,
    atom_codes(_, Ls),
    false.

src/machine/system_calls.rs

index 61bd9b67f665e5aa5dfc17f586b9ec45f53c6732..84714436b31af8e5e412bbd4be236aa2add57ce3 100644 (file)
@@ -1011,6 +1011,8 @@ impl MachineState {
         let mut string = String::new();
 
         for addr in addrs {
+            let addr = self.store(self.deref(addr));
+
             match Number::try_from(addr) {
                 Ok(Number::Fixnum(n)) => {
                     match u32::try_from(n.get_num()) {