fix regex_t and regmatch_t struct sizes for macOS — regoff_t is long (8 bytes) not int
- SHA
413f789b3aaf2bd2d330745939ca5f67b01ac9c0- Parents
-
9e0d9b2 - Tree
dee4293
413f789
413f789b3aaf2bd2d330745939ca5f67b01ac9c09e0d9b2
dee4293| Status | File | + | - |
|---|---|---|---|
| M |
src/scripting/advanced_test.f90
|
12 | 3 |
src/scripting/advanced_test.f90modified@@ -17,12 +17,21 @@ module advanced_test | ||
| 17 | 17 | |
| 18 | 18 | ! POSIX regex types for =~ operator |
| 19 | 19 | type, bind(C) :: regex_t |
| 20 | - integer(c_int) :: re_dummy(32) ! Opaque structure | |
| 20 | +#ifdef __APPLE__ | |
| 21 | + integer(c_int8_t) :: re_dummy(32) ! macOS: regex_t is 32 bytes | |
| 22 | +#else | |
| 23 | + integer(c_int8_t) :: re_dummy(256) ! Linux: regex_t is ~128-256 bytes | |
| 24 | +#endif | |
| 21 | 25 | end type regex_t |
| 22 | 26 | |
| 23 | 27 | type, bind(C) :: regmatch_t |
| 24 | - integer(c_int) :: rm_so ! Start offset | |
| 25 | - integer(c_int) :: rm_eo ! End offset | |
| 28 | +#ifdef __APPLE__ | |
| 29 | + integer(c_long) :: rm_so ! regoff_t is long (8 bytes) on macOS | |
| 30 | + integer(c_long) :: rm_eo | |
| 31 | +#else | |
| 32 | + integer(c_int) :: rm_so ! regoff_t is int (4 bytes) on Linux | |
| 33 | + integer(c_int) :: rm_eo | |
| 34 | +#endif | |
| 26 | 35 | end type regmatch_t |
| 27 | 36 | |
| 28 | 37 | ! Regex compilation flags |