diff options
author | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2016-07-08 15:26:00 -0400 |
---|---|---|
committer | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2016-07-08 15:26:00 -0400 |
commit | c86137f472fdf876c2c223c8d99f673f477b7554 (patch) | |
tree | 7ed0e172eaa8d4f831a2d59287547f63f1e71dee /eval.c | |
parent | 4a0f74139fb702a14c2e6782fb1965245e4f9d2f (diff) | |
download | egawk-c86137f472fdf876c2c223c8d99f673f477b7554.tar.gz egawk-c86137f472fdf876c2c223c8d99f673f477b7554.tar.bz2 egawk-c86137f472fdf876c2c223c8d99f673f477b7554.zip |
Optimization: support unterminated field strings inside gawk, but make terminated copies for the API.
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -493,8 +493,15 @@ static int posix_compare(NODE *s1, NODE *s2) { int ret = 0; + char save1, save2; size_t l = 0; + save1 = s1->stptr[s1->stlen]; + s1->stptr[s1->stlen] = '\0'; + + save2 = s2->stptr[s2->stlen]; + s2->stptr[s2->stlen] = '\0'; + if (gawk_mb_cur_max == 1) { if (strlen(s1->stptr) == s1->stlen && strlen(s2->stptr) == s2->stlen) ret = strcoll(s1->stptr, s2->stptr); @@ -556,6 +563,8 @@ posix_compare(NODE *s1, NODE *s2) } #endif + s1->stptr[s1->stlen] = save1; + s2->stptr[s2->stlen] = save2; return ret; } |