diff options
author | dgp <dgp@users.sourceforge.net> | 2016-11-08 02:56:11 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-11-08 02:56:11 (GMT) |
commit | cad330bea5eb1c5fa6958b11506b10529846eb00 (patch) | |
tree | e1ef2f40fc3b0408147198398113220f4f9d7eb4 /generic/tclExecute.c | |
parent | b1c86e9055e5384cf165f8e509583067d4b32796 (diff) | |
download | tcl-cad330bea5eb1c5fa6958b11506b10529846eb00.zip tcl-cad330bea5eb1c5fa6958b11506b10529846eb00.tar.gz tcl-cad330bea5eb1c5fa6958b11506b10529846eb00.tar.bz2 |
Route all [string last] operations through a common implementation.
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r-- | generic/tclExecute.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index a44451f..0d48071 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -5728,23 +5728,10 @@ TEBCresume( NEXT_INST_F(1, 2, 1); case INST_STR_FIND_LAST: - ustring1 = Tcl_GetUnicodeFromObj(OBJ_AT_TOS, &length); /* Haystack */ - ustring2 = Tcl_GetUnicodeFromObj(OBJ_UNDER_TOS, &length2);/* Needle */ - - match = -1; - if (length2 > 0 && length2 <= length) { - for (p=ustring1+length-length2 ; p>=ustring1 ; p--) { - if ((*p == *ustring2) && - memcmp(ustring2,p,sizeof(Tcl_UniChar)*length2) == 0) { - match = p - ustring1; - break; - } - } - } + match = TclStringLast(OBJ_UNDER_TOS, OBJ_AT_TOS, INT_MAX - 1); TRACE(("%.20s %.20s => %d\n", O2S(OBJ_UNDER_TOS), O2S(OBJ_AT_TOS), match)); - TclNewIntObj(objResultPtr, match); NEXT_INST_F(1, 2, 1); |