Fix for 3562458, rowspan and colspan converted to ints so that large values will...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Dec 2004 02:41:38 +0000 (02:41 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Dec 2004 02:41:38 +0000 (02:41 +0000)
the ridiculous 1024 limit on the span values.

        * khtml/html/html_tableimpl.cpp:
        (HTMLTableCellElementImpl::parseHTMLAttribute):
        * khtml/rendering/render_table.cpp:
        (RenderTableCell::collapsedBottomBorder):
        * khtml/rendering/render_table.h:
        (khtml::RenderTableCell::colSpan):
        (khtml::RenderTableCell::setColSpan):
        (khtml::RenderTableCell::rowSpan):
        (khtml::RenderTableCell::setRowSpan):
        (khtml::RenderTableCol::span):
        (khtml::RenderTableCol::setSpan):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8217 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/html/html_tableimpl.cpp
WebCore/khtml/rendering/render_table.cpp
WebCore/khtml/rendering/render_table.h

index 62f8596d6665a3bdc201e592e233201ef0a33a1b..9ae3a135ada1478d5b75f5ffc0f73977bc9e4304 100644 (file)
@@ -1,3 +1,20 @@
+2004-12-14  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3562458, rowspan and colspan converted to ints so that large values will work for them.  Remove
+       the ridiculous 1024 limit on the span values.
+
+        * khtml/html/html_tableimpl.cpp:
+        (HTMLTableCellElementImpl::parseHTMLAttribute):
+        * khtml/rendering/render_table.cpp:
+        (RenderTableCell::collapsedBottomBorder):
+        * khtml/rendering/render_table.h:
+        (khtml::RenderTableCell::colSpan):
+        (khtml::RenderTableCell::setColSpan):
+        (khtml::RenderTableCell::rowSpan):
+        (khtml::RenderTableCell::setRowSpan):
+        (khtml::RenderTableCol::span):
+        (khtml::RenderTableCol::setSpan):
+
 2004-12-14  David Hyatt  <hyatt@apple.com>
 
        Make sure <col> and <colgroup> can have spans updated dynamically as well.
index 8f87284ed2a5977b008383549fb05cbcc273df9a..0e6bfa2617575db62dcf835fdb39a8a185a2b641 100644 (file)
@@ -935,18 +935,14 @@ void HTMLTableCellElementImpl::parseHTMLAttribute(HTMLAttributeImpl *attr)
     switch(attr->id())
     {
     case ATTR_ROWSPAN:
-        // ###
         rSpan = !attr->isNull() ? attr->value().toInt() : 1;
-        // limit this to something not causing an overflow with short int
-        if (rSpan < 1 || rSpan > 1024) rSpan = 1;
+        if (rSpan < 1) rSpan = 1;
         if (renderer() && renderer()->isTableCell())
             static_cast<RenderTableCell*>(renderer())->updateFromElement();
         break;
     case ATTR_COLSPAN:
-        // ###
         cSpan = !attr->isNull() ? attr->value().toInt() : 1;
-        // limit this to something not causing an overflow with short int
-        if (cSpan < 1 || cSpan > 1024) cSpan = 1;
+        if (cSpan < 1) cSpan = 1;
         if (renderer() && renderer()->isTableCell())
             static_cast<RenderTableCell*>(renderer())->updateFromElement();
         break;
index 85d8d0d1ee163810ae4c778bcc28cedcdfb47ff2..ae07eee7f7479ccf1a16f915afd594bae602f129 100644 (file)
@@ -1927,7 +1927,7 @@ CollapsedBorderValue RenderTableCell::collapsedBottomBorder() const
     
     // Now check row groups.
     RenderObject* currSection = parent()->parent();
-    if (row()+rowSpan() >= static_cast<RenderTableSection*>(currSection)->numRows()) {
+    if (row() + rowSpan() >= static_cast<RenderTableSection*>(currSection)->numRows()) {
         // (5) Our row group's bottom border.
         result = compareBorders(result, CollapsedBorderValue(&currSection->style()->borderBottom(), BROWGROUP));
         if (!result.exists()) return result;
index 1a5798cb358568c127f6e83f772dfb478a39ac9d..909f10ffbc9a6a2258d414d493c16a6028424b5a 100644 (file)
@@ -322,11 +322,11 @@ public:
     long cellIndex() const { return 0; }
     void setCellIndex( long ) { }
 
-    unsigned short colSpan() const { return cSpan; }
-    void setColSpan( unsigned short c ) { cSpan = c; }
+    int colSpan() const { return cSpan; }
+    void setColSpan(int c) { cSpan = c; }
 
-    unsigned short rowSpan() const { return rSpan; }
-    void setRowSpan( unsigned short r ) { rSpan = r; }
+    int rowSpan() const { return rSpan; }
+    void setRowSpan(int r) { rSpan = r; }
 
     int col() const { return _col; }
     void setCol(int col) { _col = col; }
@@ -386,8 +386,8 @@ protected:
     
     int _row;
     int _col;
-    ushort rSpan;
-    ushort cSpan;
+    int rSpan;
+    int cSpan;
     int _topExtra : 31;
     bool nWrap : 1;
     int _bottomExtra : 31;
@@ -406,8 +406,8 @@ public:
 
     virtual const char *renderName() const { return "RenderTableCol"; }
 
-    long span() const { return _span; }
-    void setSpan( long s ) { _span = s; }
+    int span() const { return _span; }
+    void setSpan(int s) { _span = s; }
 
     virtual void addChild(RenderObject *child, RenderObject *beforeChild = 0);
 
@@ -424,7 +424,7 @@ public:
 #endif
 
 protected:
-    short _span;
+    int _span;
 };
 
 };