diff options
author | Alan Third <alan@idiocy.org> | 2018-08-11 14:37:37 +0100 |
---|---|---|
committer | Alan Third <alan@idiocy.org> | 2018-08-11 14:37:37 +0100 |
commit | e39f975ee9e0b9f3682ee4b86800821d2e40aaa8 (patch) | |
tree | 213a0f3172d10f941a03cbea578d6188c8dbd320 /src/editfns.c | |
parent | ef1abd99fafc9177058438cdf84776441ce62fc5 (diff) | |
parent | 914b0300bcca8ac016b85df54ed36c98d07c74a7 (diff) | |
download | emacs-scratch/ns-drawing.tar.gz |
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs into ns-drawingscratch/ns-drawing
Diffstat (limited to 'src/editfns.c')
-rw-r--r-- | src/editfns.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/editfns.c b/src/editfns.c index 0fbc5aad8c3..a4cff595bd0 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -4268,6 +4268,9 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message) /* The start and end bytepos in the output string. */ ptrdiff_t start, end; + /* The start of the spec in the format string. */ + ptrdiff_t fbeg; + /* Whether the argument is a string with intervals. */ bool_bf intervals : 1; } *info; @@ -4421,6 +4424,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message) char conversion = *format++; memset (&discarded[format0 - format_start], 1, format - format0 - (conversion == '%')); + info[ispec].fbeg = format0 - format_start; if (conversion == '%') { new_result = true; @@ -5011,7 +5015,9 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message) else if (discarded[bytepos] == 1) { position++; - if (fieldn < nspec && translated == info[fieldn].start) + if (fieldn < nspec + && position > info[fieldn].fbeg + && translated == info[fieldn].start) { translated += info[fieldn].end - info[fieldn].start; fieldn++; @@ -5031,7 +5037,9 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message) else if (discarded[bytepos] == 1) { position++; - if (fieldn < nspec && translated == info[fieldn].start) + if (fieldn < nspec + && position > info[fieldn].fbeg + && translated == info[fieldn].start) { translated += info[fieldn].end - info[fieldn].start; fieldn++; |