Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-09-09 15:31:49 +0300
committerGitHub <noreply@github.com>2016-09-09 15:31:49 +0300
commit4df86a703a56b3c6a75bbba20d581e7422858e09 (patch)
treec67aa2763e056f0a43c3e144f3abae7cbb13826a /hugolib
parenteaf2f9bce5537a1dcbdb32dc62b9827e5a99585b (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.go9
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