From c2a820081784c9a57b441c7f4e4c71edd5ed96ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Sat, 20 Jun 2026 02:13:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20CI=20lint=20?= =?UTF-8?q?=E4=B8=8E=E5=89=8D=E7=AB=AF=E7=B1=BB=E5=9E=8B=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 (1M context) --- pkg/io/path_test.go | 6 +++--- web/src/views/file/UploadModal.vue | 13 ++++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pkg/io/path_test.go b/pkg/io/path_test.go index cdb8725c..953e3514 100644 --- a/pkg/io/path_test.go +++ b/pkg/io/path_test.go @@ -40,7 +40,7 @@ func isImmutable(path string) bool { func TestChmodNormalDir(t *testing.T) { tmpDir, err := os.MkdirTemp("", "test_chmod_normal") assert.NoError(t, err) - defer os.RemoveAll(tmpDir) + defer func() { _ = os.RemoveAll(tmpDir) }() sub := filepath.Join(tmpDir, "sub") assert.NoError(t, os.Mkdir(sub, 0755)) @@ -59,7 +59,7 @@ func TestChmodNormalDir(t *testing.T) { func TestUnlockRelockAttr(t *testing.T) { tmpDir, err := os.MkdirTemp("", "test_unlock_attr") assert.NoError(t, err) - defer os.RemoveAll(tmpDir) + defer func() { _ = os.RemoveAll(tmpDir) }() locked := filepath.Join(tmpDir, "locked.txt") normal := filepath.Join(tmpDir, "normal.txt") @@ -86,7 +86,7 @@ func TestUnlockRelockAttr(t *testing.T) { func TestChmodWithImmutable(t *testing.T) { tmpDir, err := os.MkdirTemp("", "test_chmod_immutable") assert.NoError(t, err) - defer os.RemoveAll(tmpDir) + defer func() { _ = os.RemoveAll(tmpDir) }() userIni := filepath.Join(tmpDir, ".user.ini") assert.NoError(t, Write(userIni, "open_basedir=/tmp/", 0644)) diff --git a/web/src/views/file/UploadModal.vue b/web/src/views/file/UploadModal.vue index 0e32d2e9..f2b7aca8 100644 --- a/web/src/views/file/UploadModal.vue +++ b/web/src/views/file/UploadModal.vue @@ -88,8 +88,9 @@ const generateUniqueName = async (fileName: string, reserved: Set): Prom existsArr = candidates.map(() => false) } for (let i = 0; i < batchSize; i++) { - if (!existsArr[i] && !reserved.has(candidates[i])) { - return candidates[i] + const name = candidates[i] + if (name && !existsArr[i] && !reserved.has(name)) { + return name } } offset += batchSize @@ -178,11 +179,13 @@ const precheckFiles = async (files: File[]): Promise => { const accepted: File[] = [] const conflicts: File[] = [] for (let i = 0; i < files.length; i++) { + const file = files[i] + if (!file) continue if (existsArr[i]) { - conflicts.push(files[i]) + conflicts.push(file) } else { - uploadPlanMap.set(getFileKey(files[i]), { uploadName: files[i].name, force: false }) - accepted.push(files[i]) + uploadPlanMap.set(getFileKey(file), { uploadName: file.name, force: false }) + accepted.push(file) } }