From 5f7ed98aa65b43cd0ae7ffb7d862c0a797f2d021 Mon Sep 17 00:00:00 2001 From: Mark Baker Date: Tue, 16 Jul 2019 11:00:00 +0200 Subject: [PATCH] Prevent duplicate no fills (#1086) * Merge branch 'master' of C:\Projects\PHPOffice\PHPSpreadsheet\develop with conflicts. * Ignore colours for hash generation when fill style in NONE * Update changelog --- CHANGELOG.md | 1 + src/PhpSpreadsheet/Style/Fill.php | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0364e95..8dcce647 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org). ### Fixed +- Eliminate duplicate fill none style entries [Issue #1066](https://github.com/PHPOffice/PhpSpreadsheet/issues/1066) - Fix number format masks containing literal (non-decimal point) dots [Issue #1079](https://github.com/PHPOffice/PhpSpreadsheet/issues/1079) - Fix number format masks containing named colours that were being misinterpreted as date formats; and add support for masks that fully replace the value with a full text string [Issue #1009](https://github.com/PHPOffice/PhpSpreadsheet/issues/1009) - Stricter-typed comparison testing in COUNTIF() and COUNTIFS() evaluation [Issue #1046](https://github.com/PHPOffice/PhpSpreadsheet/issues/1046) diff --git a/src/PhpSpreadsheet/Style/Fill.php b/src/PhpSpreadsheet/Style/Fill.php index c2ad895e..ce616c9d 100644 --- a/src/PhpSpreadsheet/Style/Fill.php +++ b/src/PhpSpreadsheet/Style/Fill.php @@ -313,12 +313,13 @@ class Fill extends Supervisor if ($this->isSupervisor) { return $this->getSharedComponent()->getHashCode(); } - + // Note that we don't care about colours for fill type NONE, but could have duplicate NONEs with + // different hashes if we don't explicitly prevent this return md5( $this->getFillType() . $this->getRotation() . - $this->getStartColor()->getHashCode() . - $this->getEndColor()->getHashCode() . + ($this->getFillType() !== self::FILL_NONE ? $this->getStartColor()->getHashCode() : '') . + ($this->getFillType() !== self::FILL_NONE ? $this->getEndColor()->getHashCode() : '') . __CLASS__ ); }