From e92573c5d7161e7d7fdaaeab9a7ced0b03fa2277 Mon Sep 17 00:00:00 2001
From: Koni Marti <koni.marti@gmail.com>
Date: Thu, 14 Jul 2022 21:49:54 +0200
Subject: [PATCH] lib: fix tests for 386 platforms

Tests in lib/structure_helpers_test.go pass on amd64 platforms but fail
on 386 platforms. This can be reproduced with the following steps:

1. Create a Dockerfile in aerc's source folder:

	FROM i386/alpine:edge

	RUN apk update && apk upgrade
	RUN apk add --no-cache go make scdoc

	WORKDIR aerc

	COPY . .

	RUN make

	CMD make tests

2. Build the image:
	$ docker buildx build --platform=linux/386 -t test .

3. Run the image:
	$ docker run --rm --platform=linux/386 -it test

The test in lib/structure_helpers_test.go will fail.

If the same above steps are done with this patch applied, all tests pass.

Signed-off-by: Koni Marti <koni.marti@gmail.com>
Acked-by: Robin Jarry <robin@jarry.cc>
---
 lib/structure_helpers.go | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/structure_helpers.go b/lib/structure_helpers.go
index 1b4a6e6..99a77a2 100644
--- a/lib/structure_helpers.go
+++ b/lib/structure_helpers.go
@@ -58,7 +58,9 @@ func FindAllNonMultipart(bs *models.BodyStructure, path []int, pathlist [][]int)
 		cur := append(path, i+1)
 		mimetype := strings.ToLower(part.MIMEType)
 		if mimetype != "multipart" {
-			pathlist = append(pathlist, cur)
+			tmp := make([]int, len(cur))
+			copy(tmp, cur)
+			pathlist = append(pathlist, tmp)
 		} else if mimetype == "multipart" {
 			if sub := FindAllNonMultipart(part, cur, nil); len(sub) > 0 {
 				pathlist = append(pathlist, sub...)