From 88a59eb7071b8018a8983034f62b904a38425468 Mon Sep 17 00:00:00 2001
From: Qianqian Fang <fangqq@gmail.com>
Date: Thu, 10 Feb 2022 12:57:09 -0500
Subject: [PATCH] give a warning when jdatadecode fails, but still return the
 raw data

---
 loadbj.m   | 7 ++++++-
 loadjson.m | 7 ++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/loadbj.m b/loadbj.m
index d5f50cb..ac6a5ae 100644
--- a/loadbj.m
+++ b/loadbj.m
@@ -150,7 +150,12 @@ function [data, mmap] = loadbj(fname,varargin)
     end
 
     if(jsonopt('JDataDecode',1,varargin{:})==1)
-        data=jdatadecode(data,'Base64',0,'Recursive',1,varargin{:});
+        try
+            data=jdatadecode(data,'Base64',0,'Recursive',1,varargin{:});
+        catch ME
+            warning(['Failed to decode embedded JData annotations, '...
+                'return raw JSON data\n\nError: %s\n%s'], ME.identifier, ME.message);
+        end
     end
 end
 
diff --git a/loadjson.m b/loadjson.m
index 4f89361..f704a51 100644
--- a/loadjson.m
+++ b/loadjson.m
@@ -192,7 +192,12 @@ function [data, mmap] = loadjson(fname,varargin)
     end
 
     if(jsonopt('JDataDecode',1,varargin{:})==1)
-        data=jdatadecode(data,'Base64',1,'Recursive',1,varargin{:});
+        try
+            data=jdatadecode(data,'Base64',1,'Recursive',1,varargin{:});
+        catch ME
+            warning(['Failed to decode embedded JData annotations, '...
+                'return raw JSON data\n\nError: %s\n%s'], ME.identifier, ME.message);
+        end
     end
     
     if(isfield(opt,'progressbar_'))
-- 
GitLab