Commit Graph

13127 Commits

Author SHA1 Message Date
bobsayshilol
30fb2ed59d Avoid undefined arithmetic shifting
The result of a left shift on a positive signed integer (Rune) must fit
into an unsigned integer otherwise it's undefined behaviour, as is left
shifting a negative integer by any amount. This code can only be hit if
|x >= 0xf0| and hence a left shift of 31 will always be undefined
unless the input is 0 or 1.

To avoid hitting this we can instead extend the lowest bit to be the
mask if we assume that ints are 2's complement, which we already do
elsewhere. This generates identical code in testing on Compiler
Explorer and the Odin test suite passes locally with this change.

Note that the original code would change to be defined behaviour in
C++20, however we are currently build with |-std=c++14| in the build
scripts.
2024-12-01 11:54:51 +11:00
bobsayshilol
ddde456af7 Avoid member access through nullptr in debug
If |result_count| is 0 then |results| will be a nullptr and hence the
access |results->Tuple| is undefined behaviour. There's already an
early return in the 0 branch so move that to be the first thing so that
we can guarantee that it's not a nullptr.

Note that technically we take the address of the result so it's not
actually dereferencing it, however UBSan doesn't care about that.
2024-12-01 11:54:51 +11:00
bobsayshilol
b10538da7a Fix invalid union access
UBSan spotted that |src->Basic.kind| had a value outside the range of
|BasicKind| due to it actually being a |Type_Pointer|. Since these are
stored in a union there could be cases where the value of |kind| just
so happens to be |Basic_string|, in which case the branch would have
been taken when it shouldn't have been.

To fix this simply check that it's a |Type_Basic| before treating it as
a |Basic|.
2024-12-01 11:54:51 +11:00
Laytan
78dc4d4907 fix test 2024-12-01 11:54:51 +11:00
Laytan
9f1c894f1f port pthread_mutex_t and pthread_cond_t from sys/unix cause miniaudio wants it 2024-12-01 11:54:51 +11:00
Laytan
f342215b4d clean up dynlib and path/filepath with sys/posix 2024-12-01 11:54:51 +11:00
Laytan
2b5f0fc729 remove pthread from sys/unix and use sys/posix where used 2024-12-01 11:54:51 +11:00
Laytan
7de56ec852 fix #load_directory including nested directories 2024-12-01 11:54:51 +11:00
Laytan Laats
49ddbd9b99 sys/posix: impl rest of linux, impl some of Windows 2024-12-01 11:54:51 +11:00
Karl Zylinski
879771fe32 Fix for using utf8string.at with last rune index returning wrong rune. 2024-12-01 11:54:51 +11:00
Jeroen van Rijn
c9c237babf match_exact_value: return when type is compound
fixes #4431
2024-12-01 11:54:51 +11:00
Alexis Caraballo
d9326ae93d fix cbor.to_json always returning array of tuples for objects
to_json uses a small proc to check if all keys of an object are strings.
It was always returning false for any input.
2024-12-01 11:54:51 +11:00
Jeroen van Rijn
1df246664f Fix image.which_bytes
Invert test in `which_bytes` to fix Softimage PIC detection. Fixes #4429.
2024-12-01 11:54:51 +11:00
Laytan
5faefac106 math/rand: choice_bit_set return not_empty -> ok 2024-12-01 11:54:51 +11:00
Laytan Laats
d85f18e898 math/rand: add choice_bit_set 2024-12-01 11:54:51 +11:00
Patric Dexheimer
12cfc9b8de Update process_windows.odin
Mistype
2024-12-01 11:54:51 +11:00
IllusionMan1212
fafb2b1e75 core/io: correctly escape runes greater than 0xFFFF 2024-12-01 11:54:51 +11:00
Yawning Angel
111f10cbbf src/big_int.cpp: Use square-multiply for exponentiation
For utterly unrealistic constant sizes, this still crashes on my system,
but it crashes fast due to the OOM killer, and people using rediculously
large exponents get what they deserve.
2024-12-01 11:54:51 +11:00
gingerBill
197339d91d Add warning for unsigned >= 0 like conditions in a for loop 2024-12-01 11:54:51 +11:00
gingerBill
e6a4f3048f Fix possible leak in recursive filepath.glob 2024-12-01 11:54:51 +11:00
gingerBill
63f880ae80 Fix bug caused due to incorrect type checking looking for context not defined in a context 2024-12-01 11:54:51 +11:00
Laytan Laats
8e6cbe9a29 fix the typeid type kind of a typeid being set to Typeid_Invalid 2024-12-01 11:54:51 +11:00
Laytan Laats
f3c19e183f wgpu: add missing JS impl for RenderPassEncoderSetBlendConstant 2024-12-01 11:54:51 +11:00
Laytan Laats
d185ab5991 sys/wasm/js: add set_element_style 2024-12-01 11:54:51 +11:00
Laytan Laats
3740497e42 encoding/cbor: fix skipping of ignored/missing fields in struct unmarshal 2024-12-01 11:54:51 +11:00
Laytan Laats
4207d4fded encoding/cbor: handle binary having more fields than the struct by discarding 2024-12-01 11:54:51 +11:00
Laytan Laats
0d4d3bd1de math/rand: support non-contiguous enums in choice_enum 2024-12-01 11:54:51 +11:00
Laytan Laats
538cea27f7 wgpu: take version check out of @init, use C cc when appropriate 2024-12-01 11:54:51 +11:00
Laytan Laats
0c470895b3 image: add panic when load is called without any registered loaders 2024-12-01 11:54:50 +11:00
Laytan Laats
6e534c0e24 check packed load and set alignment on all loads, not just lb_emit_load 2024-12-01 11:54:50 +11:00
Laytan Laats
64fdf6e18f quote the dsymutil argument
Fixes #4417
2024-12-01 11:54:50 +11:00
Lucas Perlind
fc3ea5b3d9 core/unicode/utf16: add rune_count proc
This returns the number of runes in a u16 slice
2024-12-01 11:54:50 +11:00
Misomosi
f1667422e6 Fix #4390 by assigning invalid entity type 2024-12-01 11:54:50 +11:00
Misomosi
cb5e064526 Fixes #4395 by not assuming simd returns val 2024-12-01 11:54:50 +11:00
Misomosi
b459cb6b2c Fix magnitude check in parse_f64_prefix 2024-12-01 11:54:50 +11:00
Lucas Perlind
28d01ce7b5 cached.cpp: Improve internal cached robustness
Do not memory map files; Windows cannot write to a file that is memory
mapped.
Write cache after llvm building. This ensures the cache won't have a
false positive if llvm fails.
2024-12-01 11:54:50 +11:00
laytan
182a916092 fix erronous updating alignment of external global 2024-12-01 11:54:50 +11:00
Colin Davidson
79975efb7e add better comment about freebsd hacks 2024-12-01 11:54:50 +11:00
Colin Davidson
f7fffc4b27 Update core/time/timezone/tzdate.odin
Co-authored-by: Feoramund <161657516+Feoramund@users.noreply.github.com>
2024-12-01 11:54:50 +11:00
Colin Davidson
e4983831de Update core/time/timezone/tzdate.odin
Co-authored-by: Feoramund <161657516+Feoramund@users.noreply.github.com>
2024-12-01 11:54:50 +11:00
Colin Davidson
f2711dca7f add julian day rule resolvers 2024-12-01 11:54:50 +11:00
Colin Davidson
83932280f8 swap datetime_to_str to aprintf 2024-12-01 11:54:50 +11:00
Colin Davidson
0ed3d459f7 delete local_str with the appropriate allocator 2024-12-01 11:54:50 +11:00
Colin Davidson
e8b6652aba sort out windows enum names too 2024-12-01 11:54:50 +11:00
Colin Davidson
8875921ec7 tweaks per laytan suggestions 2024-12-01 11:54:50 +11:00
Colin Davidson
fc9983e9c8 Initial cut of timezones 2024-12-01 11:54:50 +11:00
Tom Solberg
b7e61095a9 cbor: fix capacity and ptr calculation for dynarray unmarshal 2024-12-01 11:54:50 +11:00
Laytan Laats
357f463372 odin/parser: fix offsets of value declarations
Fixes #4356
2024-12-01 11:54:50 +11:00
IllusionMan1212
1f2875e939 fix(core:{odin,c}/tokenizer): Don't error on valid \uE000 codepoint 2024-12-01 11:54:50 +11:00
Laytan Laats
f56ac466c3 encoding/json: fix leak when string is unmarshalled into non-string field
Fixes #4391
2024-12-01 11:54:50 +11:00