diff options
| author | Keith Randall <khr@google.com> | 2019-03-06 14:45:47 -0800 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2019-03-07 00:06:12 +0000 |
| commit | 9dc3b8b722ec93a3cd16742764a29cb3f908edbe (patch) | |
| tree | 88fb0fdc69cd5f1dfa503cd455f5a420bdd95f1c /src/database/sql | |
| parent | e269f4ce01c458b53975fe666261b4be13160773 (diff) | |
| download | go-9dc3b8b722ec93a3cd16742764a29cb3f908edbe.tar.xz | |
reflect: fix more issues with StructOf GC programs
First the insidious bug:
var n uintptr
for n := elemPtrs; n > 120; n -= 120 {
prog = append(prog, 120)
prog = append(prog, mask[:15]...)
mask = mask[15:]
}
prog = append(prog, byte(n))
prog = append(prog, mask[:(n+7)/8]...)
The := breaks this code, because the n after the loop is always 0!
We also do need to handle field padding correctly. In particular
the old padding code doesn't correctly handle fields that are not
a multiple of a pointer in size.
Fixes #30606.
Change-Id: Ifcab9494dc25c20116753c5d7e0145d6c2053ed8
Reviewed-on: https://go-review.googlesource.com/c/go/+/165860
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/database/sql')
0 files changed, 0 insertions, 0 deletions
