From be550e556dd96bb243af72b09edd6d3ba1d055c6 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Tue, 14 Jun 2022 07:12:46 -0400 Subject: [PATCH 1/4] Fix potential call stack size issue --- src/lib/defaultExtractor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/defaultExtractor.js b/src/lib/defaultExtractor.js index 9106bd59371a..d96e7890bd0e 100644 --- a/src/lib/defaultExtractor.js +++ b/src/lib/defaultExtractor.js @@ -12,7 +12,7 @@ export function defaultExtractor(context) { let results = [] for (let pattern of patterns) { - results.push(...(content.match(pattern) ?? [])) + results = [...results, ...(content.match(pattern) ?? [])) } return results.filter((v) => v !== undefined).map(clipAtBalancedParens) From e204969001e3aa18dda7954ab03012a3c9235b5a Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Tue, 14 Jun 2022 07:16:01 -0400 Subject: [PATCH 2/4] Update defaultExtractor.js --- src/lib/defaultExtractor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/defaultExtractor.js b/src/lib/defaultExtractor.js index d96e7890bd0e..4c28d007a047 100644 --- a/src/lib/defaultExtractor.js +++ b/src/lib/defaultExtractor.js @@ -12,7 +12,7 @@ export function defaultExtractor(context) { let results = [] for (let pattern of patterns) { - results = [...results, ...(content.match(pattern) ?? [])) + results = [...results, ...(content.match(pattern) ?? [])] } return results.filter((v) => v !== undefined).map(clipAtBalancedParens) From ef60b6ff753cb0fac5a897dad5c3d82988efc302 Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Tue, 14 Jun 2022 13:17:43 +0200 Subject: [PATCH 3/4] add test to verify "Maximum call stack size exceeded" is fixed --- tests/default-extractor.test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/default-extractor.test.js b/tests/default-extractor.test.js index d23dfd9cc3ad..e0a39431a0bc 100644 --- a/tests/default-extractor.test.js +++ b/tests/default-extractor.test.js @@ -476,3 +476,9 @@ test('multi-word + arbitrary values + quotes', async () => { expect(extractions).toContain(`grid-cols-['repeat(2)']`) }) + +test('a lot of data', () => { + let extractions = defaultExtractor('underline '.repeat(2 ** 17)) + + expect(extractions).toContain(`underline`) +}) From 3d06fb550aa8ab10c01be7be904bcc4aa867724e Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Tue, 14 Jun 2022 14:13:02 +0200 Subject: [PATCH 4/4] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f215d9c28ac1..4c4d88d42187 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Ignore PostCSS nodes returned by `addVariant` ([#8608](https://github.com/tailwindlabs/tailwindcss/pull/8608)) - Fix missing spaces around arithmetic operators ([#8615](https://github.com/tailwindlabs/tailwindcss/pull/8615)) - Detect alpha value in CSS `theme()` function when using quotes ([#8625](https://github.com/tailwindlabs/tailwindcss/pull/8625)) +- Fix "Maximum call stack size exceeded" bug ([#8636](https://github.com/tailwindlabs/tailwindcss/pull/8636)) ## [3.1.2] - 2022-06-10