(shr-render-td): Allow blank/missing <TD>s.
authorLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Tue, 5 Oct 2010 22:57:06 +0000 (00:57 +0200)
committerLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Tue, 5 Oct 2010 22:57:06 +0000 (00:57 +0200)
lisp/ChangeLog
lisp/shr.el

index 17e04ab..834fb83 100644 (file)
@@ -1,3 +1,7 @@
+2010-10-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * shr.el (shr-render-td): Allow blank/missing <TD>s.
+
 2010-10-05  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * dgnushack.el (dgnushack-compile): Exclude shr.el from being compiled
index 2d5d4d6..f463ee0 100644 (file)
@@ -506,10 +506,14 @@ Return a string with image data."
   (let ((trs nil))
     (dolist (row cont)
       (when (eq (car row) 'tr)
-       (let ((i 0)
-             (tds nil))
-         (dolist (column (cdr row))
-           (when (memq (car column) '(td th))
+       (let ((tds nil)
+             (columns (cdr row))
+             (i 0)
+             column)
+         (while (< i (length widths))
+           (setq column (pop columns))
+           (when (or (memq (car column) '(td th))
+                     (null column))
              (push (shr-render-td (cdr column) (aref widths i) fill)
                    tds)
              (setq i (1+ i))))
@@ -531,11 +535,16 @@ Return a string with image data."
        (forward-line 1))
       (when fill
        (goto-char (point-min))
-       (while (not (eobp))
-         (end-of-line)
-         (when (> (- width (current-column)) 0)
-           (insert (make-string (- width (current-column)) ? )))
-         (forward-line 1)))
+       ;; If the buffer is totally empty, then put a single blank
+       ;; line her.
+       (if (zerop (buffer-size))
+           (insert (make-string width ? ))
+         ;; Otherwise, fill the buffer.
+         (while (not (eobp))
+           (end-of-line)
+           (when (> (- width (current-column)) 0)
+             (insert (make-string (- width (current-column)) ? )))
+           (forward-line 1))))
       (list max
            (count-lines (point-min) (point-max))
            (buffer-string)