smallsong / minify

Automatically exported from code.google.com/p/minify
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

Your whitespace removal regex is truncating CSS statements #243

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?

1. Minify css

What is the expected output? What do you see instead?

Test I ran

lib/Minify/CSS/Compressor.php

 69     protected function _process($css)
 70     {
 71         var_dump($css); //Added
 72         $css = str_replace("\r\n", "\n", $css);
[...]
 87         // remove ws around { } and last semicolon in declaration block
 88         $css = preg_replace('/\\s*{\\s*/', '{', $css);
 89         var_dump($css); //Added
 90         $css = preg_replace('/;?\\s*}\\s*/', '}', $css);
 91         var_dump($css); //Added

    string(597) "/* Browser Fixes
-----------------------------------------------------*/
* {margin:0;padding:0;}
/* accomidate for height:100% bug */
html{ height:100%; }

/* ie6 magic-whitespace-after-images bug fix */
img.mwaibfTop { *margin-top: expression("-15px"); }
img.mwaibfBot { *margin-bottom: expression("-4px"); }

/* prevent overlap */
.clearfix:after {
    content: "."; 
    display: block; 
    height: 0; 
    clear: both; 
    visibility: hidden;
}
.clearfix {display: inline-block;}

/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */"

string(356) " *{margin:0;padding:0;} html{height:100%; } 
img.mwaibfTop{*margin-top: expression("-15px"); }
img.mwaibfBot{*margin-bottom: expression("-4px"); } .clearfix:after{content: 
"."; 
    display: block; 
    height: 0; 
    clear: both; 
    visibility: hidden;
}
.clearfix{display: inline-block;}/*\*/* html .clearfix{height: 1%;}
.clearfix{display: block;}/**/"

string(338) " 
*{margin:0;padding:0}htmlimg.mwaibfTopimg.mwaibfBot.clearfix:after{content: 
"."; 
    display: block; 
    height: 0; 
    clear: both; 
    visibility: hidden}.clearfix/*\*/* html .clearfix.clearfix/**/"

Temporary solution:

Commenting out the trailing brace whitespace regex

PHP environment:

$ /usr/bin/php --version
PHP Warning:  Module 'imagick' already loaded in Unknown on line 0
PHP 5.2.6-1+lenny6 with Suhosin-Patch 0.9.6.2 (cli) (built: Feb  9 2010 
03:05:13) 
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
    with XCache v1.2.2, Copyright (c) 2005-2007, by mOo

------------------------------------------------------------------------
$ /usr/bin/php -i

PHP Warning:  Module 'imagick' already loaded in Unknown on line 0
phpinfo()
PHP Version => 5.2.6-1+lenny6

System => Linux [...] 2.6.26-2-686-bigmem #1 SMP Wed Feb 10 09:24:17 UTC 2010 
i686
Build Date => Feb  9 2010 03:00:39
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
Scan this dir for additional .ini files => /etc/php5/cli/conf.d
additional .ini files parsed => /etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/date.ini,
/etc/php5/cli/conf.d/gd.ini,
/etc/php5/cli/conf.d/imagick.ini,
/etc/php5/cli/conf.d/include_path.ini,
/etc/php5/cli/conf.d/mcrypt.ini,
/etc/php5/cli/conf.d/mysql.ini,
/etc/php5/cli/conf.d/mysqli.ini,
/etc/php5/cli/conf.d/output_buffering.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini,
/etc/php5/cli/conf.d/xcache.ini,
/etc/php5/cli/conf.d/xmlrpc.ini,
/etc/php5/cli/conf.d/xsl.ini

PHP API => 20041225
PHP Extension => 20060613
Zend Extension => 220060519
Debug Build => no
Thread Safety => disabled
Zend Memory Manager => enabled
IPv6 Support => enabled
Registered PHP Streams => zip, php, file, data, http, ftp, compress.bzip2, 
compress.zlib, https, ftps  
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, sslv2, 
tls
Registered Stream Filters => string.rot13, string.toupper, string.tolower, 
string.strip_tags, convert.*, consumed, convert.iconv.*, bzip2.*, zlib.*

This server is protected with the Suhosin Patch 0.9.6.2
Copyright (c) 2006 Hardened-PHP Project

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
    with XCache v1.2.2, Copyright (c) 2005-2007, by mOo

 _______________________________________________________________________

Configuration

PHP Core

Directive => Local Value => Master Value
allow_call_time_pass_reference => On => On
allow_url_fopen => On => On
allow_url_include => Off => Off
always_populate_raw_post_data => Off => Off
arg_separator.input => & => &
arg_separator.output => & => &
asp_tags => Off => Off
auto_append_file => no value => no value
auto_globals_jit => On => On
auto_prepend_file => no value => no value
browscap => no value => no value
default_charset => no value => no value
default_mimetype => text/html => text/html
define_syslog_variables => Off => Off
disable_classes => no value => no value
disable_functions => no value => no value
display_errors => Off => Off
display_startup_errors => Off => Off
doc_root => no value => no value
docref_ext => no value => no value
docref_root => no value => no value
enable_dl => Off => Off
error_append_string => no value => no value
error_log => no value => no value
error_prepend_string => no value => no value
error_reporting => 6143 => 6143
expose_php => On => On
extension_dir => /usr/lib/php5/20060613+lfs => /usr/lib/php5/20060613+lfs
file_uploads => On => On
highlight.bg => <font style="color: #FFFFFF">#FFFFFF</font> => <font 
style="color: #FFFFFF">#FFFFFF</font>
highlight.comment => <font style="color: #FF8000">#FF8000</font> => <font 
style="color: #FF8000">#FF8000</font>
highlight.default => <font style="color: #0000BB">#0000BB</font> => <font 
style="color: #0000BB">#0000BB</font>
highlight.html => <font style="color: #000000">#000000</font> => <font 
style="color: #000000">#000000</font>
highlight.keyword => <font style="color: #007700">#007700</font> => <font 
style="color: #007700">#007700</font>
highlight.string => <font style="color: #DD0000">#DD0000</font> => <font 
style="color: #DD0000">#DD0000</font>
html_errors => Off => Off
ignore_repeated_errors => Off => Off
ignore_repeated_source => Off => Off
ignore_user_abort => Off => Off
implicit_flush => On => On
include_path => [...]
log_errors => On => On
log_errors_max_len => 1024 => 1024
magic_quotes_gpc => On => On
magic_quotes_runtime => Off => Off
magic_quotes_sybase => Off => Off
mail.force_extra_parameters => no value => no value
max_execution_time => 0 => 0
max_file_uploads => 50 => 50
max_input_nesting_level => 64 => 64
max_input_time => -1 => -1
memory_limit => 16M => 16M
open_basedir => no value => no value
output_buffering => 0 => 0
output_handler => no value => no value
post_max_size => 8M => 8M
precision => 12 => 12
realpath_cache_size => 16K => 16K
realpath_cache_ttl => 120 => 120
register_argc_argv => On => On
register_globals => Off => Off
register_long_arrays => On => On
report_memleaks => On => On
report_zend_debug => Off => Off
safe_mode => Off => Off
safe_mode_exec_dir => no value => no value
safe_mode_gid => Off => Off
safe_mode_include_dir => no value => no value
sendmail_from => no value => no value
sendmail_path => /usr/sbin/sendmail -t -i => /usr/sbin/sendmail -t -i
serialize_precision => 100 => 100
short_open_tag => On => On
SMTP => localhost => localhost
smtp_port => 25 => 25
sql.safe_mode => Off => Off
suhosin.log.phpscript => 0 => 0
suhosin.log.phpscript.is_safe => Off => Off
suhosin.log.phpscript.name => no value => no value
suhosin.log.sapi => no value => no value
suhosin.log.script => no value => no value
suhosin.log.script.name => no value => no value
suhosin.log.syslog => no value => no value
suhosin.log.syslog.facility => no value => no value
suhosin.log.syslog.priority => no value => no value
suhosin.log.use-x-forwarded-for => Off => Off
track_errors => Off => Off
unserialize_callback_func => no value => no value
upload_max_filesize => 2M => 2M
upload_tmp_dir => no value => no value
user_dir => no value => no value
variables_order => EGPCS => EGPCS
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
y2k_compliance => On => On
zend.ze1_compatibility_mode => Off => Off

bcmath

BCMath support => enabled

bz2

BZip2 Support => Enabled
Stream Wrapper support => compress.bz2://
Stream Filter support => bzip2.decompress, bzip2.compress
BZip2 Version => 1.0.5, 10-Dec-2007

calendar

Calendar support => enabled

ctype

ctype functions => enabled

curl

cURL support => enabled
cURL Information => libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.8 
libssh2/0.18

date

date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => America/Los_Angeles

Directive => Local Value => Master Value
date.default_latitude => 31.7667 => 31.7667
date.default_longitude => 35.2333 => 35.2333
date.sunrise_zenith => 90.583333 => 90.583333
date.sunset_zenith => 90.583333 => 90.583333
date.timezone => America/Los_Angeles => America/Los_Angeles

dba

DBA support => enabled
Supported handlers => cdb cdb_make db4 inifile flatfile 

dom

DOM/XML => enabled
DOM/XML API Version => 20031129
libxml Version => 2.6.32
HTML Support => enabled
XPath Support => enabled
XPointer Support => enabled
Schema Support => enabled
RelaxNG Support => enabled

exif

EXIF Support => enabled
EXIF Version => 1.4 $Id: exif.c,v 1.173.2.5.2.25 2008/03/12 17:33:14 iliaa Exp $
Supported EXIF Version => 0220
Supported filetypes => JPEG,TIFF

filter

Input Validation and Filtering => enabled
Revision => $Revision: 1.52.2.42 $

Directive => Local Value => Master Value
filter.default => unsafe_raw => unsafe_raw
filter.default_flags => no value => no value

ftp

FTP support => enabled

gd

GD Support => enabled
GD Version => 2.0 or higher
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.3.7
T1Lib Support => enabled
GIF Read Support => enabled
GIF Create Support => enabled
JPG Support => enabled
PNG Support => enabled
WBMP Support => enabled

gettext

GetText Support => enabled

hash

hash support => enabled
Hashing Engines => md2 md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160 
ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 
tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 
haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 
haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 

iconv

iconv support => enabled
iconv implementation => glibc
iconv library version => 2.7

Directive => Local Value => Master Value
iconv.input_encoding => ISO-8859-1 => ISO-8859-1
iconv.internal_encoding => ISO-8859-1 => ISO-8859-1
iconv.output_encoding => ISO-8859-1 => ISO-8859-1

imagick

ImageMagick support => enabled
Magick Backend => ImageMagick
ImageMagick version => 6.2.4
PHP imagick version => 0.9.11
MaxRGB => 65535
Supported image formats => 8BIM
Font Family - Name => AvantGarde - AvantGarde-Book

json

json support => enabled
json version => 1.2.1

libxml

libXML support => active
libXML Version => 2.6.32
libXML streams => enabled

mbstring

Multibyte Support => enabled
Multibyte string engine => libmbfl
Multibyte (japanese) regex support => enabled
Multibyte regex (oniguruma) version => 4.4.4
Multibyte regex (oniguruma) backtrack check => On

mbstring extension makes use of "streamable kanji code filter and converter", 
which is distributed under the GNU Lesser General Public License version 2.1.

Directive => Local Value => Master Value
mbstring.detect_order => no value => no value
mbstring.encoding_translation => Off => Off
mbstring.func_overload => 0 => 0
mbstring.http_input => pass => pass
mbstring.http_output => pass => pass
mbstring.internal_encoding => ISO-8859-1 => no value
mbstring.language => neutral => neutral
mbstring.strict_detection => Off => Off
mbstring.substitute_character => no value => no value

mcrypt

mcrypt support => enabled
Version => 2.5.7
Api No => 20021217
Supported ciphers => cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 
rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea 
blowfish enigma rc2 tripledes 
Supported modes => cbc cfb ctr ecb ncfb nofb ofb stream 

Directive => Local Value => Master Value
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value

mime_magic

mime_magic support => invalid magic file, disabled

Directive => Local Value => Master Value
mime_magic.debug => Off => Off
mime_magic.magicfile => /usr/share/file/magic.mime => /usr/share/file/magic.mime

mysql

MySQL Support => enabled
Active Persistent Links => 0
Active Links => 0
Client API version => 5.0.51a
MYSQL_MODULE_TYPE => external
MYSQL_SOCKET => /var/run/mysqld/mysqld.sock
MYSQL_INCLUDE => -I/usr/include/mysql
MYSQL_LIBS => -L/usr/lib -lmysqlclient_r 

Directive => Local Value => Master Value
mysql.allow_persistent => On => On
mysql.connect_timeout => 60 => 60
mysql.default_host => no value => no value
mysql.default_password => no value => no value
mysql.default_port => no value => no value
mysql.default_socket => no value => no value
mysql.default_user => no value => no value
mysql.max_links => Unlimited => Unlimited
mysql.max_persistent => Unlimited => Unlimited
mysql.trace_mode => Off => Off

mysqli

MysqlI Support => enabled
Client API library version => 5.0.51a
Client API header version => 5.0.51a
MYSQLI_SOCKET => /var/run/mysqld/mysqld.sock

Directive => Local Value => Master Value
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => no value => no value
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.reconnect => Off => Off

ncurses

ncurses support => enabled
ncurses library version => 5.7
color support => yes

openssl

OpenSSL support => enabled
OpenSSL Version => OpenSSL 0.9.8g 19 Oct 2007

pcntl

pcntl support => enabled

pcre

PCRE (Perl Compatible Regular Expressions) Support => enabled
PCRE Library Version => 7.6 2008-01-28

Directive => Local Value => Master Value
pcre.backtrack_limit => 100000 => 100000
pcre.recursion_limit => 100000 => 100000

PDO

PDO support => enabled
PDO drivers => mysql

pdo_mysql

PDO Driver for MySQL, client library version => 5.0.51a

pfpro

Verisign Payflow Pro support => enabled
libpfpro version => L307

Directive => Local Value => Master Value
pfpro.defaulthost => test-payflow.verisign.com => test-payflow.verisign.com
pfpro.defaultport => 443 => 443
pfpro.defaulttimeout => 30 => 30
pfpro.proxyaddress => no value => no value
pfpro.proxylogon => no value => no value
pfpro.proxypassword => no value => no value
pfpro.proxyport => no value => no value

posix

Revision => $Revision: 1.70.2.3.2.18 $

Reflection

Reflection => enabled
Version => $Id: php_reflection.c,v 1.164.2.33.2.50 2008/03/13 15:56:21 iliaa 
Exp $

session

Session Support => enabled
Registered save handlers => files user 
Registered serializer handlers => php php_binary wddx 

Directive => Local Value => Master Value
session.auto_start => Off => Off
session.bug_compat_42 => On => On
session.bug_compat_warn => On => On
session.cache_expire => 180 => 180
session.cache_limiter => nocache => nocache
session.cookie_domain => no value => no value
session.cookie_httponly => Off => Off
session.cookie_lifetime => 0 => 0
session.cookie_path => / => /
session.cookie_secure => Off => Off
session.entropy_file => no value => no value
session.entropy_length => 0 => 0
session.gc_divisor => 100 => 100
session.gc_maxlifetime => 1440 => 1440
session.gc_probability => 0 => 0
session.hash_bits_per_character => 4 => 4
session.hash_function => 0 => 0
session.name => PHPSESSID => PHPSESSID
session.referer_check => no value => no value
session.save_handler => files => files
session.save_path => /var/lib/php5 => /var/lib/php5
session.serialize_handler => php => php
session.use_cookies => On => On
session.use_only_cookies => Off => Off
session.use_trans_sid => 0 => 0

shmop

shmop support => enabled

SimpleXML

Simplexml support => enabled
Revision => $Revision: 1.151.2.22.2.39 $
Schema support => enabled

soap

Soap Client => enabled
Soap Server => enabled

Directive => Local Value => Master Value
soap.wsdl_cache => 1 => 1
soap.wsdl_cache_dir => /tmp => /tmp
soap.wsdl_cache_enabled => 1 => 1
soap.wsdl_cache_limit => 5 => 5
soap.wsdl_cache_ttl => 86400 => 86400

sockets

Sockets Support => enabled

SPL

SPL support => enabled
Interfaces => Countable, OuterIterator, RecursiveIterator, SeekableIterator, 
SplObserver, SplSubject
Classes => AppendIterator, ArrayIterator, ArrayObject, 
BadFunctionCallException, BadMethodCallException, CachingIterator, 
DirectoryIterator, DomainException, EmptyIterator, FilterIterator, 
InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, 
LimitIterator, LogicException, NoRewindIterator, OutOfBoundsException, 
OutOfRangeException, OverflowException, ParentIterator, RangeException, 
RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, 
RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, 
RegexIterator, RuntimeException, SimpleXMLIterator, SplFileInfo, SplFileObject, 
SplObjectStorage, SplTempFileObject, UnderflowException, 
UnexpectedValueException

standard

Regex Library => Bundled library enabled
Dynamic Library Support => enabled
Path to sendmail => /usr/sbin/sendmail -t -i

Directive => Local Value => Master Value
assert.active => 1 => 1
assert.bail => 0 => 0
assert.callback => no value => no value
assert.quiet_eval => 0 => 0
assert.warning => 1 => 1
auto_detect_line_endings => 0 => 0
default_socket_timeout => 60 => 60
safe_mode_allowed_env_vars => PHP_ => PHP_
safe_mode_protected_env_vars => LD_LIBRARY_PATH => LD_LIBRARY_PATH
url_rewriter.tags => a=href,area=href,frame=src,input=src,form=,fieldset= => 
a=href,area=href,frame=src,input=src,form=,fieldset=
user_agent => no value => no value

sysvmsg

sysvmsg support => enabled
Revision => $Revision: 1.20.2.3.2.7 $

tokenizer

Tokenizer Support => enabled

wddx

WDDX Support => enabled
WDDX Session Serializer => enabled

XCache

XCache Support => enabled
Version => 1.2.2
Modules Built => cacher optimizer coverager assembler encoder decoder
Readonly Protection => N/A
Opcode Cache => enabled, 268,435,456 bytes, 2 split(s), with 8192 slots each
Variable Cache => enabled, 33,554,432 bytes, 2 split(s), with 8192 slots each
Shared Memory Schemes => mmap
Coverage Auto Dumper => disabled

Directive => Local Value => Master Value
xcache.admin.enable_auth => On => On
xcache.cacher => On => On
xcache.coredump_directory => no value => no value
xcache.count => 2 => 2
xcache.coveragedump_directory => no value => no value
xcache.coverager => Off => Off
xcache.gc_interval => 0 => 0
xcache.mmap_path => /dev/zero => /dev/zero
xcache.optimizer => Off => Off
xcache.readonly_protection => no value => no value
xcache.shm_scheme => mmap => mmap
xcache.size => 256M => 256M
xcache.slots => 8K => 8K
xcache.stat => On => On
xcache.test => no value => no value
xcache.ttl => 0 => 0
xcache.var_count => 2 => 2
xcache.var_gc_interval => 300 => 300
xcache.var_maxttl => 0 => 0
xcache.var_size => 32M => 32M
xcache.var_slots => 8K => 8K
xcache.var_ttl => 0 => 0

xml

XML Support => active
XML Namespace Support => active
libxml2 Version => 2.6.32

xmlreader

XMLReader => enabled

xmlrpc

core library version => xmlrpc-epi v. 0.51
php extension version => 0.51
author => Dan Libby
homepage => http://xmlrpc-epi.sourceforge.net
open sourced by => Epinions.com

xmlwriter

XMLWriter => enabled

xsl

XSL => enabled
libxslt Version => 1.1.24
libxslt compiled against libxml Version => 2.6.32
EXSLT => enabled
libexslt Version => 1.1.24

zip

Zip => enabled
Extension Version => $Id: php_zip.c,v 1.1.2.43 2008/01/18 00:51:38 pajoye Exp $
Zip version => 1.8.11
Libzip version => 0.8.0-compatible

zlib

ZLib Support => enabled
Stream Wrapper support => compress.zlib://
Stream Filter support => zlib.inflate, zlib.deflate
Compiled Version => 1.2.1.1
Linked Version => 1.2.3.3

Directive => Local Value => Master Value
zlib.output_compression => Off => Off
zlib.output_compression_level => -1 => -1
zlib.output_handler => no value => no value

Additional Modules

Module Name
sysvsem
sysvshm

Original issue reported on code.google.com by franklin...@gmail.com on 16 Sep 2011 at 11:35

GoogleCodeExporter commented 9 years ago
I can't duplicate. Using the master branch from github (what I recommend), I 
get this:

*{margin:0;padding:0}html{height:100%}img.mwaibfTop{*margin-top:expression("-15p
x")}img.mwaibfBot{*margin-bottom:expression("-4px")}.clearfix:after{content:".";
display:block;height:0;clear:both;visibility:hidden}.clearfix{display:inline-blo
ck}/*\*/* html
.clearfix{height:1%}.clearfix{display:block}/**/

Original comment by mrclay....@gmail.com on 19 Sep 2011 at 1:42

GoogleCodeExporter commented 9 years ago
Figured it out.  It's our CMS, Expression Engine 2.  When the "Debugging" set 
to "0" (turned off) it implements some sort of limit that disrupts the 
minifying process.  We apply Minify to Object Oriented Packages of CSS which 
includes about 50 CSS files.  It looks like its just choking.  

Thanks for your consideration

Original comment by franklin...@gmail.com on 27 Sep 2011 at 11:26