less / less.js

Less. The dynamic stylesheet language.
http://lesscss.org
Apache License 2.0
17.02k stars 3.41k forks source link

Fix #3698 #3373 - parsing variables fail when there is no trailing semicolon #3700

Closed b-kelly closed 1 year ago

b-kelly commented 2 years ago

What:

Added a fix for the parser crashing when a css variable property does not end with a semicolon. Fixes #3698 and Fixes #3373.

Why:

This helps to avoid crashes when importing pre-minified css files from e.g. an npm package. In our case, cssnano always drops the trailing semicolon on the last property. This cannot be disabled without disabling all of whitespace normalization (normalizeWhitespace option). Fixing the bug in Less.js fixes this use case for us.

How:

When calling permissiveValue on a detected css variable, the untilTokens parameter is left unset. This defaults it to detecting ; for ending the value. I've set the parameter to /[;}]/ instead in order to close variables on either the semicolon (;) or the closing curly bracket (}) character. This may not be the most optimal fix, but it gets the job done in the test cases I've added. Additionally, it doesn't break any of the existing test cases.

Checklist:

matthew-dean commented 2 years ago

Oh, thanks for taking a look at this!

abhishek4794 commented 2 years ago

Hi,

Can we merge this pr? I am still getting this issue

https://github.com/less/less.js/issues/3373

liuqiangqiang0624 commented 1 year ago

same here,can we merge this ?

iChenLei commented 1 year ago

ping @matthew-dean

baileyandy commented 1 year ago

Hi, is there any chance we can get a release of less with this fix in soon please?