Mercurial > vim
comparison src/ex_getln.c @ 32098:39f4126d2a0d v9.0.1380
patch 9.0.1380: CTRL-X on 2**64 subtracts two
Commit: https://github.com/vim/vim/commit/5fb78c3fa5c996c08a65431d698bd2c251eef5c7
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Mar 4 20:47:39 2023 +0000
patch 9.0.1380: CTRL-X on 2**64 subtracts two
Problem: CTRL-X on 2**64 subtracts two. (James McCoy)
Solution: Correct computation for large number. (closes https://github.com/vim/vim/issues/12103)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 04 Mar 2023 22:00:03 +0100 |
parents | ca6bc7c04163 |
children | a5b5d8df5763 |
comparison
equal
deleted
inserted
replaced
32097:79439f353fa0 | 32098:39f4126d2a0d |
---|---|
4336 varnumber_T num; | 4336 varnumber_T num; |
4337 | 4337 |
4338 *str = skipwhite(*str); | 4338 *str = skipwhite(*str); |
4339 if (**str == '-' || vim_isdigit(**str)) // parse "from" part of range | 4339 if (**str == '-' || vim_isdigit(**str)) // parse "from" part of range |
4340 { | 4340 { |
4341 vim_str2nr(*str, NULL, &len, 0, &num, NULL, 0, FALSE); | 4341 vim_str2nr(*str, NULL, &len, 0, &num, NULL, 0, FALSE, NULL); |
4342 *str += len; | 4342 *str += len; |
4343 *num1 = (int)num; | 4343 *num1 = (int)num; |
4344 first = TRUE; | 4344 first = TRUE; |
4345 } | 4345 } |
4346 *str = skipwhite(*str); | 4346 *str = skipwhite(*str); |
4347 if (**str == ',') // parse "to" part of range | 4347 if (**str == ',') // parse "to" part of range |
4348 { | 4348 { |
4349 *str = skipwhite(*str + 1); | 4349 *str = skipwhite(*str + 1); |
4350 vim_str2nr(*str, NULL, &len, 0, &num, NULL, 0, FALSE); | 4350 vim_str2nr(*str, NULL, &len, 0, &num, NULL, 0, FALSE, NULL); |
4351 if (len > 0) | 4351 if (len > 0) |
4352 { | 4352 { |
4353 *num2 = (int)num; | 4353 *num2 = (int)num; |
4354 *str = skipwhite(*str + len); | 4354 *str = skipwhite(*str + len); |
4355 } | 4355 } |