summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Freese <brianfreese@hotmail.com>2013-02-28 15:36:24 -0600
committerBrian Freese <brianfreese@hotmail.com>2013-02-28 15:36:24 -0600
commit31beb18ad4cfe8c51a7b648e3019c345e786ad97 (patch)
tree6158b4a24b501cac2cead8edf8426f8e46c6ac7c
parent12eb82d283cab148183c37c07e3f75a309969dec (diff)
downloadplist-31beb18ad4cfe8c51a7b648e3019c345e786ad97.tar.gz
Fixed defect in PData in which exception was thrown when <data/> element was read from plist.
-rw-r--r--Rakefile5
-rw-r--r--lib/plist/parser.rb3
-rw-r--r--test/assets/test_data_elements.plist2
3 files changed, 6 insertions, 4 deletions
diff --git a/Rakefile b/Rakefile
index e200300..be4303f 100644
--- a/Rakefile
+++ b/Rakefile
@@ -13,8 +13,8 @@ require 'rubygems'
require 'rake'
require 'rake/testtask'
require 'rake/packagetask'
-require 'rake/gempackagetask'
require 'rake/contrib/rubyforgepublisher'
+require 'rubygems/package_task'
$:.unshift(File.dirname(__FILE__) + "/lib")
require 'plist'
@@ -146,8 +146,9 @@ EOD
s.autorequire = 'plist'
end
-Rake::GemPackageTask.new(spec) do |p|
+Gem::PackageTask.new(spec) do |p|
p.gem_spec = spec
p.need_tar = true
p.need_zip = true
end
+
diff --git a/lib/plist/parser.rb b/lib/plist/parser.rb
index a3e551d..594cc36 100644
--- a/lib/plist/parser.rb
+++ b/lib/plist/parser.rb
@@ -210,8 +210,7 @@ module Plist
require 'base64'
class PData < PTag
def to_ruby
- data = Base64.decode64(text.gsub(/\s+/, ''))
-
+ data = Base64.decode64(text.gsub(/\s+/, '')) unless text.nil?
begin
return Marshal.load(data)
rescue Exception => e
diff --git a/test/assets/test_data_elements.plist b/test/assets/test_data_elements.plist
index 1e9da9d..7fdd161 100644
--- a/test/assets/test_data_elements.plist
+++ b/test/assets/test_data_elements.plist
@@ -20,5 +20,7 @@
<data>BAhvOhZNYXJzaGFsYWJsZU9iamVjdAY6CUBmb28iHnRoaXMgb2JqZWN0IHdh
cyBtYXJzaGFsZWQ=
</data>
+ <key>nodata</key>
+ <data/>
</dict>
</plist>