Discussion:
Rendering of illegal widths (incl "px", which used to be legal)
James C
2014-08-25 09:41:00 UTC
Permalink
Hello All,

The row of three pictures on this web-page:
http://www.avrprojects.net/index.php?view=article&id=61
renders badly in dillo, and differently from Chrome and firefox,
because two of them have:
width="180px"
which the source-code for dillo 3.0.4 (html.cc at about line 1450)
tells me used to be legal html, but isn't anymore.

Dillo:
- reports this as a web bug (with which I agree)
- sets the length to auto (which I think means using the default width)

To minimise the damage from illegal pages, without hiding the problem,
I propose to assume that the numbers in all widths are sensible, and
to complain about, but ignore, the trailing garbage.

I also discovered that the bug message and another, suppressed,
message had type problems, which I have addressed in a way that looks
reasonable on osx.

My proposed patch is below. Please be aware that Jorge and I started
a conversation about whether this was the right thing to do, which
wedged.

I tested this proposed change by hacking up saved copies of the
web-page in various ways. One of them, which makes a mess of the bug
message, is attached, but they are not really a clean test-case. I am
not aware of any automated test into which this change should be
added. If someone can point me toward one, then I will think about
how to test it cleanly.

Regards,
James.

-----------------------
$ diff html.cc.orig html.cc
1483,1485c1483,1488
< if (*end && !isspace (*end)) {
< BUG_MSG("Garbage after length: %s\n", attr);
< l = CSS_CREATE_LENGTH(0.0, CSS_LENGTH_TYPE_AUTO);
---
while (end && isspace(*end))
++end;
if (end && *end) {
BUG_MSG("Garbage after length: '%s'; "
"ignoring garbage; using %g (possibly in pixels)\n",
attr, CSS_LENGTH_VALUE(l));
1489c1492
< _MSG("a_Html_parse_length: \"%s\" %d\n", attr, CSS_LENGTH_VALUE(l));
---
_MSG("a_Html_parse_length: \"%s\" %g\n", attr, CSS_LENGTH_VALUE(l));
-----------------------

ps

I am contemplating getting involved in other trivial rendering
problems, and thinking about the todos in dpid/main.c:204 and
dpid/main.c:297. My interest in the todos is that dillo functions
with gmail, but keeps (de facto) logging me out by discarding my
session cookie.

Could someone please point me to generic advice about:
- which source tree I should be building (Jorge mentioned GROWS, but I
don't know what that means)
- how to use mercurial to develop multiple patches in parallel and
keep them separate, while running a built program that includes all of
them
?

Loading...