Excerpts from Rich Lane's message of Wed Mar 10 12:24:12 -0500 2010: > Excerpts from Edward Z. Yang's message of 2010-03-09 23:50:23 -0500: > > - content_type = (m.header.content_type || > > "application/unknown").downcase # sometimes RubyMail gives us nil > > + content_type = (m.header["content_type"] && m.header.content_type > > || "application/unknown").downcase # sometimes RubyMail gives us nil > > Could you explain why these changes help? What's the return value of the > [] call versus the method call?
Sure! We turn our heads to exhibit 1: The rmail code that implements m.header.content_type def content_type(default = nil) if value = self['content-type'] value.strip.split(/\s*;\s*/)[0].downcase else if block_given? yield else default end end end This code takes "text/plain; charset=utf-8" and ensures that only "text/plain" is returned. But what if self['content-type'] is empty? Then we call split on an empty string... irb(main):001:0> "".strip.split(/\s*;\s*/) => [] Oops; the zero indexing fails. Actually, the patch is buggy; I should be testing for content-type instead. :-) Cheers, Edward _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel