On Jan 21, 2008, at 10:35 PM, ledwinka wrote:
During my work on porting s60 webcore to wince, I found there is a
css bug
in render_style.h file, here is the struct define
You're probably better off basing a port on something more recent
(like trunk or the Safari 3 branch) since many windows platform/
compiler issues like this have already been resolved.
- Maciej
struct NonInheritedFlags {
bool operator==( const NonInheritedFlags other ) const {
return (_effectiveDisplay == other._effectiveDisplay)
(_originalDisplay == other._originalDisplay)
(_bg_repeat == other._bg_repeat)
(_overflow == other._overflow)
#if NOKIA_CHANGES
(_inputRequired == other._inputRequired)
#endif
(_vertical_align == other._vertical_align)
(_clear == other._clear)
(_position == other._position)
(_floating == other._floating)
(_table_layout == other._table_layout)
(_page_break_before == other._page_break_before)
(_page_break_after == other._page_break_after)
(_styleType == other._styleType)
(_affectedByHover == other._affectedByHover)
(_affectedByActive == other._affectedByActive)
(_affectedByDrag == other._affectedByDrag)
(_pseudoBits == other._pseudoBits)
(_unicodeBidi == other._unicodeBidi);
}
bool operator!=( const NonInheritedFlags other ) const {
return !(*this == other);
}
EDisplay _effectiveDisplay : 5;
EDisplay _originalDisplay : 5;
EBackgroundRepeat _bg_repeat : 2;
EOverflow _overflow : 4 ;
#if NOKIA_CHANGES
bool _inputRequired : 1 ;
#endif
EVerticalAlign _vertical_align : 4;
EClear _clear : 2;
EPosition _position : 2;
EFloat _floating : 2;
ETableLayout _table_layout : 1;
EPageBreak _page_break_before : 2;
EPageBreak _page_break_after : 2;
PseudoId _styleType : 3;
bool _affectedByHover : 1;
bool _affectedByActive : 1;
bool _affectedByDrag : 1;
int _pseudoBits : 6;
EUnicodeBidi _unicodeBidi : 2;
} noninherited_flags;
On wince platform , any code access to bit field in this struct ,
such as
EDisplay _effectiveDisplay : 5;
will produce asm code like this
EDisplay dis = noninherited_flags. effectiveDisplay;
mov r3 lsl #27
mov r3 asr #27
str r3 [sp] // write to stack variable
this problem is the ASR instruction. If _effectiveDisplay contain a
value
big than 0x0f, such as 0x1x, the ASR instruction will cause the high
bits
fill with 1 , for example, if _effectiveDisplay equal EDisplay::NONE
or
EDisplay::INLINEBOX, EDisplay dis will EQUALS -14 or -13, not a valid
value.
How to solve this problem? thanks a lot!
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-dev
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-dev