forgejo/modules
Richard Mahn 98f7013756
Prevent NPE in CSV diff rendering when column removed (#17018)
Fixes #16837 if a column is deleted.

We were clobbering the columns that were added by looping through the aline (base) and then when bline (head) was looped through, it clobbered what was in the "cells" array that is show in the diff, and then left a nil cell because nothing was shifted.

This fix properly shifts the cells, and properly puts the b cell either at its location or after, according to what the aline placed in the cells.

This includes test, adding a new test function since adding/removing cells works best with three columns, not two, which results in 4 columns of the resulting cells because it has a deleted column and an added column. If you try this locally, you can try those cases and others, such as adding a column.

There was no need to do anything special for the rows when `aline == 0 || bline == 0` so that was removed. This allows the same code to be used for removed or added lines, with the bcell text always being the RightCell, acell text being the LeftCell.

I still added the patch zeripath gave at https://github.com/go-gitea/gitea/issues/16837#issuecomment-913007382 so that just in case for some reason a cell is nil (which shouldn't happen now) it doesn't throw a 500 error, so the user can at least view the raw diff.

Also fixes in the [view.go](https://github.com/go-gitea/gitea/pull/17018/files#diff-43a7f4747c7ba8bff888c9be11affaafd595fd55d27f3333840eb19df9fad393L521) file how if a CSV file is empty (either created empty or if you edit it and remove all contents) it throws a huge 500 error when you then save it (when you view the file). Since we allow creating, saving and pushing empty files, we shouldn't throw an error on an empty CSV file, but just show its empty contents. This doesn't happen if it is a Markdown file or other type of file that is empty.
EDIT: Now handled in the markup/csv renderer code
2021-10-20 20:10:03 +01:00
..
activitypub Create pub/priv keypair for federation (#17071) 2021-09-28 15:19:22 -04:00
analyze Use git attributes to determine generated and vendored status for language stats and diffs (#16773) 2021-09-09 21:13:36 +01:00
auth Add bundle download for repository (#14538) 2021-08-24 11:47:09 -05:00
avatar refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
base Fixed assert statements. (#16089) 2021-06-07 07:27:09 +02:00
cache Add an abstract json layout to make it's easier to change json library (#16528) 2021-07-24 18:03:58 +02:00
charset refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
context Use a variable but a function for IsProd because of a slight performance increment (#17368) 2021-10-20 16:37:19 +02:00
convert API pull's head/base have correct permission (#17214) 2021-10-07 02:03:37 +02:00
cron Add simple update checker to Gitea (#17212) 2021-10-16 02:14:34 -04:00
csv Prevent NPE in CSV diff rendering when column removed (#17018) 2021-10-20 20:10:03 +01:00
doctor Nicely handle missing user in collaborations (#17049) 2021-09-27 19:07:19 +01:00
emoji Run processors on whole of text (#16155) 2021-06-17 11:35:05 +01:00
eventsource Add an abstract json layout to make it's easier to change json library (#16528) 2021-07-24 18:03:58 +02:00
generate switch to maintained lib (#16532) 2021-07-24 13:00:41 +02:00
git Fix some lints (#17337) 2021-10-17 20:47:12 +01:00
gitgraph Fix some lints (#17337) 2021-10-17 20:47:12 +01:00
graceful Fix some lints (#17337) 2021-10-17 20:47:12 +01:00
hcaptcha hCaptcha Support (#12594) 2020-10-02 23:37:53 -04:00
highlight Prevent panic in Org mode HighlightCodeBlock (#17140) 2021-09-24 14:29:32 +01:00
httpcache Use a variable but a function for IsProd because of a slight performance increment (#17368) 2021-10-20 16:37:19 +02:00
httplib refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
indexer Fix some lints (#17337) 2021-10-17 20:47:12 +01:00
json Add an abstract json layout to make it's easier to change json library (#16528) 2021-07-24 18:03:58 +02:00
lfs Fix some lints (#17337) 2021-10-17 20:47:12 +01:00
log refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
markup Fix some lints (#17337) 2021-10-17 20:47:12 +01:00
matchlist Add Allow-/Block-List for Migrate & Mirrors (#13610) 2020-11-28 19:37:58 -05:00
metrics Add metrics to get issues by repository (#17225) 2021-10-05 20:39:37 +02:00
migrations Multiple tokens support for migrating from github (#17134) 2021-10-15 13:47:15 +08:00
nosql Fix setting redis db path (#15698) 2021-05-03 13:24:24 -04:00
notification API pull's head/base have correct permission (#17214) 2021-10-07 02:03:37 +02:00
options refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
password Fixed assert statements. (#16089) 2021-06-07 07:27:09 +02:00
pprof refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
private refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
process Code Formats, Nits & Unused Func/Var deletions (#15286) 2021-04-09 09:40:34 +02:00
proxy Return nil proxy function if proxy not enabled (#16742) 2021-08-19 16:41:20 -04:00
public refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
queue Make the Mirror Queue a queue (#17326) 2021-10-17 12:43:25 +01:00
recaptcha refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
references Fix various documentation, user-facing, and source comment typos (#16367) 2021-07-08 13:38:13 +02:00
repofiles Move db related basic functions to models/db (#17075) 2021-09-19 19:49:59 +08:00
repository Ensure that git daemon export ok is created for mirrors (#17243) 2021-10-13 20:47:02 +01:00
secret Fix various documentation, user-facing, and source comment typos (#16367) 2021-07-08 13:38:13 +02:00
session Move session to models/login (#17338) 2021-10-17 19:51:56 +01:00
setting Use a variable but a function for IsProd because of a slight performance increment (#17368) 2021-10-20 16:37:19 +02:00
ssh Second attempt at preventing zombies (#16326) 2021-07-14 10:43:13 -04:00
storage refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
structs [API] Add endpount to get user org permissions (#17232) 2021-10-12 12:47:19 +02:00
svg refactor: move from io/ioutil to io and os package (#17109) 2021-09-22 13:38:34 +08:00
sync
task Fix bug of migrated repository not index (#16991) 2021-09-08 18:43:19 +01:00
templates Use a variable but a function for IsProd because of a slight performance increment (#17368) 2021-10-20 16:37:19 +02:00
test Upgrade chi to v5 (#17298) 2021-10-13 22:50:23 -04:00
timeutil Allow mocking timeutil (#17354) 2021-10-18 21:12:26 +01:00
translation Use index of the supported tags to choose user lang (#15452) 2021-04-14 19:52:01 +01:00
typesniffer Fix various documentation, user-facing, and source comment typos (#16367) 2021-07-08 13:38:13 +02:00
upload Update golangci-lint to version 1.31.0 (#13102) 2020-10-11 21:27:20 +01:00
uri Dump github/gitlab/gitea repository data to a local directory and restore to gitea (#12244) 2020-12-27 11:34:19 +08:00
user Add gitea-vet (#10948) 2020-04-05 07:20:50 +01:00
util Add user status filter to admin user management page (#16770) 2021-10-12 20:11:35 +02:00
validation Upgrade chi to v5 (#17298) 2021-10-13 22:50:23 -04:00
web Upgrade chi to v5 (#17298) 2021-10-13 22:50:23 -04:00