diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2016-09-09 15:31:49 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-09 15:31:49 +0300 |
commit | 4df86a703a56b3c6a75bbba20d581e7422858e09 (patch) | |
tree | c67aa2763e056f0a43c3e144f3abae7cbb13826a /hugolib | |
parent | eaf2f9bce5537a1dcbdb32dc62b9827e5a99585b (diff) |
Fix paginator counter on x86-32
Atomic operations with 64 bit values must be aligned for 64-bit on x86-32.
According to the spec:
"The first word in a global variable or in an allocated struct or slice can be relied upon to be 64-bit aligned."
The above wasn't enough for the `paginationPageCount` on `SiteInfo`, maybe due to how `SiteInfo` is embedded.
This commit adds a 4 byte padding before the `uint64` that creates the correct alignment.
Fixes #2415
Diffstat (limited to 'hugolib')
-rw-r--r-- | hugolib/site.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/hugolib/site.go b/hugolib/site.go index 8ffe0fad4..3e537c93d 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -155,7 +155,14 @@ type targetList struct { type SiteInfo struct { // atomic requires 64-bit alignment for struct field access - paginationPageCount uint64 + // According to the docs, " The first word in a global variable or in an + // allocated struct or slice can be relied upon to be 64-bit aligned." + // Moving paginationPageCount to the top of this struct didn't do the + // magic, maybe due to the way SiteInfo is embedded. + // Adding the 4 byte padding below does the trick. + _ [4]byte + paginationPageCount uint64 + BaseURL template.URL Taxonomies TaxonomyList Authors AuthorList |