Skip to content

Commit e78ef63

Browse files
authored
do not crash on incomplete media queries (#441)
closes #440
1 parent b486fcf commit e78ef63

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/atrules/atrules.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export function isMediaBrowserhack(prelude) {
6969
return this.break
7070
}
7171
} else if (node.type === MediaFeature) {
72-
if (value !== null && value.unit === '\\0') {
72+
if (value && value.unit && value.unit === '\\0') {
7373
returnValue = true
7474
return this.break
7575
}
@@ -81,15 +81,14 @@ export function isMediaBrowserhack(prelude) {
8181
return this.break
8282
}
8383
else if (strEquals('min-resolution', name)
84-
&& strEquals('.001', value.value)
84+
&& value && strEquals('.001', value.value)
8585
&& strEquals('dpcm', value.unit)
8686
) {
8787
returnValue = true
8888
return this.break
8989
}
9090
else if (strEquals('-webkit-min-device-pixel-ratio', name)) {
91-
let val = value.value
92-
if ((strEquals('0', val) || strEquals('10000', val))) {
91+
if (value && value.value && (strEquals('0', value.value) || strEquals('10000', value.value))) {
9392
returnValue = true
9493
return this.break
9594
}

src/atrules/atrules.test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,19 @@ AtRules('finds @media browserhacks', () => {
580580
assert.equal(actual, expected)
581581
})
582582

583+
AtRules('does not crash on incomplete @media queries', () => {
584+
let css = `
585+
@media (min-width) {}
586+
@media (-moz-images-in-menus) {}
587+
@media (min--moz-device-pixel-ratio) {}
588+
@media (-ms-high-contrast), (-ms-high-contrast) {}
589+
@media (min-resolution) {}
590+
@media (-webkit-min-device-pixel-ratio) {}
591+
`
592+
593+
assert.not.throws(() => analyze(css))
594+
})
595+
583596
AtRules('analyzes @keyframes', () => {
584597
const fixture = `
585598
@keyframes one {}

0 commit comments

Comments
 (0)