diff --git a/coverager.c b/coverager.c
index b7ffeeb..e852066 100644
--- a/coverager.c
+++ b/coverager.c
@@ -520,7 +520,7 @@ PHP_FUNCTION(xcache_coverager_decode)
}
for (; len >= sizeof(long) * 2; len -= sizeof(long) * 2, p += 2) {
- add_index_long(return_value, p[0], p[1]);
+ add_index_long(return_value, p[0], p[1] < 0 ? 0 : p[1]);
}
}
/* }}} */
diff --git a/coverager/coverager.css b/coverager/coverager.css
index 554f036..820a533 100644
--- a/coverager/coverager.css
+++ b/coverager/coverager.css
@@ -1,5 +1,6 @@
h1 { text-align: center; display: block; }
input, table { font-family: sans-serif; font-size: 11px; }
+th { font-size: 12px; }
table { border-collapse: collapse; }
table.cycles { border: 1px solid black; margin-top: 5px; margin-bottom: 5px; }
table.cycles .col1 { background-color: #f5f5f5; }
diff --git a/coverager/coverager.php b/coverager/coverager.php
index bcc5d11..7d492a9 100644
--- a/coverager/coverager.php
+++ b/coverager/coverager.php
@@ -107,7 +107,11 @@ class XcacheCoverageViewer
$source = implode('', $lines);
ob_start();
highlight_string($source);
- $lines = explode('
', str_replace("\n", "", ob_get_clean()));
+ $lines = str_replace("\n", "", ob_get_clean());
+ $lines = str_replace('', '', $lines);
+ $lines = str_replace('
', '', $lines);
+ $lines = preg_replace('(^]*>|$)', '', $lines);
+ $lines = explode('
', $lines);
$last = array_pop($lines);
$filecov = sprint_cov($fileinfo['cov'], $lines, false);
$filecov .= $last;
@@ -294,11 +298,31 @@ class XcacheCoverageViewer
function sprint_cov($cov, $lines, $encode = true)
{
+ $lastattr = null;
foreach ($lines as $l => $line) {
$offs = $l + 1;
if ($encode) {
$line = str_replace("\n", "", htmlspecialchars($line));
}
+ else if ($line !== "") {
+ if (substr($line, 0, 7) == '') {
+ $lastattr = null;
+ $line = substr($line, 7);
+ }
+ else if (isset($lastattr)) {
+ $line = $lastattr . $line;
+ }
+
+ if (preg_match('!(]+>|)[^<>]*$!', $line, $m)) {
+ if ($m[1] == '') {
+ $lastattr = null;
+ }
+ else {
+ $line .= '';
+ $lastattr = $m[1];
+ }
+ }
+ }
if (isset($cov[$offs])) {
$lines[$l] = sprintf("