diff options
author | Philip Withnall <philip.withnall@collabora.co.uk> | 2015-05-13 18:40:59 +0200 |
---|---|---|
committer | Florian Brosch <flo.brosch@gmail.com> | 2016-01-10 21:55:25 +0100 |
commit | 0bc6256c00f81cc13a25245dd95ec7ef8672ab61 (patch) | |
tree | e3727f9736049c905d7fc917b8386243146d9838 | |
parent | b055a1dfe3a8918802c1e8da76ae12137502e340 (diff) | |
download | vala-0bc6256c00f81cc13a25245dd95ec7ef8672ab61.tar.gz |
charts: Fix error handling if gvRenderData() returns an error
If libgvc was not built properly or is running against incorrectly versioned
plugins, gvRenderData() can fail and return a null string. Ensure libvaladoc
handles this correctly.
https://bugzilla.gnome.org/show_bug.cgi?id=711590
-rw-r--r-- | src/libvaladoc/charts/chart.vala | 5 | ||||
-rw-r--r-- | src/libvaladoc/html/htmlmarkupwriter.vala | 8 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/libvaladoc/charts/chart.vala b/src/libvaladoc/charts/chart.vala index 03dab30f7..a6307d7ff 100644 --- a/src/libvaladoc/charts/chart.vala +++ b/src/libvaladoc/charts/chart.vala @@ -52,13 +52,14 @@ public class Valadoc.Charts.Chart : Api.Visitor { context.render (graph, file_type, file); } - public uint8[] write_buffer (string file_type) { + public uint8[]? write_buffer (string file_type) { if (context == null) { context = factory.create_context (graph); } - uint8[] data; + uint8[]? data; + /* This will return null in data if it fails. */ context.render_data (graph, file_type, out data); return data; } diff --git a/src/libvaladoc/html/htmlmarkupwriter.vala b/src/libvaladoc/html/htmlmarkupwriter.vala index 113f0c6f1..15ed9efd1 100644 --- a/src/libvaladoc/html/htmlmarkupwriter.vala +++ b/src/libvaladoc/html/htmlmarkupwriter.vala @@ -44,9 +44,11 @@ public class Valadoc.Html.MarkupWriter : Valadoc.MarkupWriter { } public MarkupWriter add_usemap (Charts.Chart chart) { - string buf = (string) chart.write_buffer ("cmapx"); - raw_text ("\n"); - raw_text (buf); + string? buf = (string?) chart.write_buffer ("cmapx"); + if (buf != null) { + raw_text ("\n"); + raw_text ((!) buf); + } return this; } |