Bug #1272 » variable.patch
| variable.c (working copy) | ||
|---|---|---|
|
iv_index_tbl = ROBJECT_IV_INDEX_TBL(obj);
|
||
|
if (!iv_index_tbl) break;
|
||
|
if (!st_lookup(iv_index_tbl, id, &index)) break;
|
||
|
if (len <= index) break;
|
||
|
if (len <= (long)index) break;
|
||
|
val = ptr[index];
|
||
|
if (val != Qundef)
|
||
|
return val;
|
||
| ... | ... | |
|
ivar_extended = 1;
|
||
|
}
|
||
|
len = ROBJECT_NUMIV(obj);
|
||
|
if (len <= index) {
|
||
|
if (len <= (long)index) {
|
||
|
VALUE *ptr = ROBJECT_IVPTR(obj);
|
||
|
if (index < ROBJECT_EMBED_LEN_MAX) {
|
||
|
RBASIC(obj)->flags |= ROBJECT_EMBED;
|
||
| ... | ... | |
|
VALUE *newptr;
|
||
|
long newsize = (index+1) + (index+1)/4; /* (index+1)*1.25 */
|
||
|
if (!ivar_extended &&
|
||
|
iv_index_tbl->num_entries < newsize) {
|
||
|
(long)(iv_index_tbl->num_entries) < newsize) {
|
||
|
newsize = iv_index_tbl->num_entries;
|
||
|
}
|
||
|
if (RBASIC(obj)->flags & ROBJECT_EMBED) {
|
||
| ... | ... | |
|
iv_index_tbl = ROBJECT_IV_INDEX_TBL(obj);
|
||
|
if (!iv_index_tbl) break;
|
||
|
if (!st_lookup(iv_index_tbl, id, &index)) break;
|
||
|
if (ROBJECT_NUMIV(obj) <= index) break;
|
||
|
if (ROBJECT_NUMIV(obj) <= (long)index) break;
|
||
|
val = ROBJECT_IVPTR(obj)[index];
|
||
|
if (val != Qundef)
|
||
|
return Qtrue;
|
||
| ... | ... | |
|
iv_index_tbl = ROBJECT_IV_INDEX_TBL(obj);
|
||
|
if (!iv_index_tbl) break;
|
||
|
if (!st_lookup(iv_index_tbl, id, &index)) break;
|
||
|
if (ROBJECT_NUMIV(obj) <= index) break;
|
||
|
if (ROBJECT_NUMIV(obj) <= (long)index) break;
|
||
|
val = ROBJECT_IVPTR(obj)[index];
|
||
|
if (val != Qundef) {
|
||
|
ROBJECT_IVPTR(obj)[index] = Qundef;
|
||
- « Previous
- 1
- …
- 4
- 5
- 6
- Next »