My apologies. The patch I submitted with the original report is incomplete. It fixes the case in foo.rb with the non-empty string, but does not fix the empty string case.
Attached is the complete patch.
diff -ur libbarby-ruby-0.3.orig/lib/barby/barcode/code_128.rb libbarby-ruby-0.3/lib/barby/barcode/code_128.rb --- libbarby-ruby-0.3.orig/lib/barby/barcode/code_128.rb 2009-11-18 17:51:28.000000000 -0700 +++ libbarby-ruby-0.3/lib/barby/barcode/code_128.rb 2009-11-18 22:35:54.000000000 -0700 @@ -208,7 +208,7 @@ #character set, an extra will be created. def data=(data) data, *extra = data.split(/([#{CODEA+CODEB+CODEC}])/n) - @data = data + @data = data || '' self.extra = extra.join unless extra.empty? end