summaryrefslogtreecommitdiff
path: root/spew/bypass.go
diff options
context:
space:
mode:
Diffstat (limited to 'spew/bypass.go')
-rw-r--r--spew/bypass.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/spew/bypass.go b/spew/bypass.go
index a8d27a3..565bf58 100644
--- a/spew/bypass.go
+++ b/spew/bypass.go
@@ -91,6 +91,21 @@ func init() {
flagKindShift = 0
flagRO = 1 << 5
flagIndir = 1 << 6
+
+ // Commit adf9b30e5594 modified the flags to separate the
+ // flagRO flag into two bits which specifies whether or not the
+ // field is embedded. This causes flagIndir to move over a bit
+ // and means that flagRO is the combination of either of the
+ // original flagRO bit and the new bit.
+ //
+ // This code detects the change by extracting what used to be
+ // the indirect bit to ensure it's set. When it's not, the flag
+ // order has been changed to the newer format, so the flags are
+ // updated accordingly.
+ if upfv&flagIndir == 0 {
+ flagRO = 3 << 5
+ flagIndir = 1 << 7
+ }
}
}