summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2016-11-08 02:56:11 (GMT)
committerdgp <dgp@users.sourceforge.net>2016-11-08 02:56:11 (GMT)
commitcad330bea5eb1c5fa6958b11506b10529846eb00 (patch)
treee1ef2f40fc3b0408147198398113220f4f9d7eb4 /generic/tclExecute.c
parentb1c86e9055e5384cf165f8e509583067d4b32796 (diff)
downloadtcl-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.c15
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);