Skip to content

Commit 7af867f

Browse files
committed
Fix problem with NTuple instantiation
Matching the symbols turns out to be really dangerous, it's necessary to match pointers.
1 parent 2568984 commit 7af867f

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/jltypes.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2218,13 +2218,15 @@ static jl_value_t *inst_tuple_w_(jl_value_t *t, jl_value_t **env, size_t n,
22182218
// If this is a Tuple{Vararg{T,N}} with known N, expand it to
22192219
// a fixed-length tuple
22202220
jl_value_t *T=NULL, *N=NULL;
2221+
jl_value_t *ttT = jl_tparam0(jl_tparam0(tt));
2222+
jl_value_t *ttN = jl_tparam1(jl_tparam0(tt));
22212223
int i;
22222224
for (i = 0; i < 2*n; i+=2) {
22232225
jl_value_t *tv = env[i];
22242226
if (jl_is_typevar(tv)) {
2225-
if (((jl_tvar_t*)tv)->name == jl_symbol("T"))
2227+
if (tv == ttT)
22262228
T = env[i+1];
2227-
else if (((jl_tvar_t*)tv)->name == jl_symbol("N"))
2229+
else if (tv == ttN)
22282230
N = env[i+1];
22292231
}
22302232
}

0 commit comments

Comments
 (0)