[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: w3m-expand-url



From: Katsumi Yamaoka <yamaoka@xxxxxxx> さん曰く
Subject: [emacs-w3m:09444] Re: w3m-expand-url
Message-ID: <b4mmz04e47l.fsf@xxxxxxx>
Date: Thu, 17 May 2007 08:30:54 +0900

> >   (w3m-expand-url "?" "http://example.com/?foo=bar")
> >    => "http://example.com/"
> >   (w3m-expand-url "foo.cgi?#hoge" "http://example.com/")
> >    => "http://example.com/foo.cgi#hoge"
> 
> > となるべきではないでしょうか?
> 
> すみません、ぼくはこっち方面は無脳なので、青田さんを全面的に信頼
> して、パッチをありがたく頂戴いたします。

ぼくもわからないのですが、パッチ後、特定の URL でエラーになるよ
うになりました。

場所は
w3m-fontify-anchors() の中の

	(cond
	 (href
	  (when (re-search-forward "[ \t\r\f\n]*\\(</a>\\)" nil t)
	    (setq end (match-beginning 0))
	    (delete-region (match-beginning 1) (match-end 1))
	    (setq href (w3m-expand-url (w3m-decode-anchor-string href)))

ですが、ここで、href => "" で突入するときがあって、

(w3m-expand-url (w3m-decode-anchor-string ""))
旧:
=> "http:///" (これで良いのかは不明 ^^;)

新:
Debugger entered--Lisp error: (args-out-of-range "" 0)
  aref("" 0)
  (eq 63 (aref url 0))
  <<snip>>
  w3m-expand-url("")

となります。とりあえず、w3m-expand-url() の該当部分を

    (when (and (not (zerop (length url)))
	       (eq ?? (aref url 0)))
      (setq url (concat "./" url))
      (w3m-string-match-url-components url))

とガードして commit しておきましたが、よくわかっていないので、査
読お願いします (__)

ちなみに、mixi 内の日記で 100% 発生しました。

-- 
白井秀行 (mailto:shirai@xxxxxxxxxxx)