If a css file is included with an @import statement and that file is not in the same directory as the including file,
the base path changes to the path of the included file for futher parsing (which is desired).
When the included file is through, parsing continues in the including file but the base path is still
the one from the included file. This is a bug.
As a simple example let's assume the following files
With main.css as follows:
/* * Base dir is '/www/themes/mytheme/css/'. * The following import will work as expected. */ @import url(a/a.css); /* * Base dir is now '/www/themes/mytheme/css/a/'. * * The following import will not work! */ @import url(b/b.css); /* * Instead this would work: */ @import url(../b/b.css);
This can be fixed by introducing a stack in drupal_load_stylesheet() (includes/common.inc) that saves and restores the base paths
for each recursive call.
PASSED: [[SimpleTest]]: [MySQL] 40,439 pass(es). View
FAILED: [[SimpleTest]]: [MySQL] 40,261 pass(es), 0 fail(s), and 4 exception(s). View
PASSED: [[SimpleTest]]: [MySQL] 57,989 pass(es). View
FAILED: [[SimpleTest]]: [MySQL] 57,581 pass(es), 1 fail(s), and 0 exception(s). View