diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-06-05 08:51:43 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-06-05 08:51:43 +0900 |
| commit | 0b4f33213729a87e146d990604330c70896dac07 (patch) | |
| tree | ab1a1d05bac250042f3dfe040ee21d89c162ac21 /src | |
| parent | b2e6a0fc04f6237f5118bf6c2f404a0d8fa4d2c4 (diff) | |
| parent | f06eceaa1965794fd2ba9910c83b4e0459550a21 (diff) | |
| download | mruby-0b4f33213729a87e146d990604330c70896dac07.tar.gz mruby-0b4f33213729a87e146d990604330c70896dac07.zip | |
merge conflict resolution
Diffstat (limited to 'src')
| -rw-r--r-- | src/dump.c | 6 | ||||
| -rw-r--r-- | src/load.c | 2 | ||||
| -rw-r--r-- | src/symbol.c | 17 |
3 files changed, 14 insertions, 11 deletions
diff --git a/src/dump.c b/src/dump.c index f3cbef3a0..7b2199a02 100644 --- a/src/dump.c +++ b/src/dump.c @@ -268,8 +268,10 @@ get_syms_block_size(mrb_state *mrb, mrb_irep *irep, int type) size += DUMP_SIZE(MRB_DUMP_SIZE_OF_SHORT, type); /* snl(n) */ if (irep->syms[sym_no] != 0) { - name = mrb_sym2name(mrb, irep->syms[sym_no]); - nlen = str_dump_len((char*)name, strlen(name), type); + int len; + + name = mrb_sym2name_len(mrb, irep->syms[sym_no], &len); + nlen = str_dump_len((char*)name, len, type); size += nlen; /* sn(n) */ } } diff --git a/src/load.c b/src/load.c index c0684f1aa..1b607909c 100644 --- a/src/load.c +++ b/src/load.c @@ -477,7 +477,7 @@ read_rite_irep_record(mrb_state *mrb, unsigned char *src, mrb_irep *irep, uint32 memcpy(buf, src, snl); //symbol name src += snl; buf[snl] = '\0'; - irep->syms[i] = mrb_intern(mrb, buf); + irep->syms[i] = mrb_intern2(mrb, buf, snl); } } crc = calc_crc_16_ccitt((unsigned char*)pStart, src - pStart); //Calculate CRC diff --git a/src/symbol.c b/src/symbol.c index fffe2fae9..6754325a5 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -34,7 +34,7 @@ sym_hash_func(mrb_state *mrb, const symbol_name s) } return h; } -#define sym_hash_equal(mrb,a, b) (a.len == b.len && strcmp(a.name, b.name) == 0) +#define sym_hash_equal(mrb,a, b) (a.len == b.len && memcmp(a.name, b.name, a.len) == 0) KHASH_INIT(n2s, symbol_name, mrb_sym, 1, sym_hash_func, sym_hash_equal) /* ------------------------------------------------------ */ @@ -76,8 +76,8 @@ mrb_intern_str(mrb_state *mrb, mrb_value str) return mrb_intern2(mrb, RSTRING_PTR(str), RSTRING_LEN(str)); } -static const char* -sym2name_len(mrb_state *mrb, mrb_sym sym, int *lenp) +const char* +mrb_sym2name_len(mrb_state *mrb, mrb_sym sym, int *lenp) { khash_t(n2s) *h = mrb->name2sym; khiter_t k; @@ -185,7 +185,7 @@ mrb_sym_to_s(mrb_state *mrb, mrb_value sym) const char *p; int len; - p = sym2name_len(mrb, id, &len); + p = mrb_sym2name_len(mrb, id, &len); return mrb_str_new(mrb, p, len); } @@ -290,7 +290,9 @@ symname_p(const char *name) case '*': if (*++m == '*') ++m; break; - + case '!': + if (*++m == '=') ++m; + break; case '+': case '-': if (*++m == '@') ++m; break; @@ -327,7 +329,7 @@ sym_inspect(mrb_state *mrb, mrb_value sym) int len; mrb_sym id = SYM2ID(sym); - name = sym2name_len(mrb, id, &len); + name = mrb_sym2name_len(mrb, id, &len); str = mrb_str_new(mrb, 0, len+1); RSTRING(str)->buf[0] = ':'; memcpy(RSTRING(str)->buf+1, name, len); @@ -342,7 +344,7 @@ const char* mrb_sym2name(mrb_state *mrb, mrb_sym sym) { int len; - const char *name = sym2name_len(mrb, sym, &len); + const char *name = mrb_sym2name_len(mrb, sym, &len); if (!name) return NULL; if (symname_p(name) && strlen(name) == len) { @@ -354,7 +356,6 @@ mrb_sym2name(mrb_state *mrb, mrb_sym sym) } } - void mrb_init_symbols(mrb_state *mrb) { |
