I'm looking at init_string_assignment_storage() in operators.c that initialized the object used when assigning individual characters in a string. Since the object is created with low_clone() the C init function is never called, so this code is currently not active.
Since the object storage is zeroed, not calling the initializer is typically fine, but this initializer does
SET_SVAL(THIS->lval[0], T_INT, PIKE_T_FREE, integer, 0);
where PIKE_T_FREE isn't 0, so enabling this code would make a difference.
However, all uses of PIKE_T_FREE in svalue.c looks for TYPEOF(x)==PIKE_T_FREE, not SUBTYPEOF(x). What is the desired behaviour here?