alright. time for my daily walk.

and then to fix a minor annoyance in scopes, and then another bug in nudl: with gcc 15, some programs cause an assertion in the compiler due to a nulled shared_ptr.

#devlog #nudl #scopes

did the nudl bug first. those were several bugs:

* `&(*some_shared_ptr)` is no longer a legal operation in gcc-15 when the pointer is null. possibly never worked, and i didn't know. replaced with `some_shared_ptr.get()`.

* out of bounds std::vector access is now caught by an assertion. apparently this used to be assertion-free, and so i didn't notice.

so the stdlib got more robust and therefore i found more errors.

#devlog #nudl

@lritter Ah I was confused for a bit. `&(*some_shared_ptr)` is definitely completely legal. https://godbolt.org/z/zoxY4dsnx

but it is UB if the shared ptr is a nullptr!
So for non-null, it is equivalent to .get(), but .get() is valid also for nullptr

Compiler Explorer - C++

void foo(int** out, std::shared_ptr<int> i) { *out = &(*i); }

@artificialmind which is what i wanted :) (it's in a hash function)

i clarified the paragraph a bit more, thanks