summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Withnall <philip.withnall@collabora.co.uk>2015-05-13 18:40:59 +0200
committerFlorian Brosch <flo.brosch@gmail.com>2016-01-10 21:55:25 +0100
commit0bc6256c00f81cc13a25245dd95ec7ef8672ab61 (patch)
treee3727f9736049c905d7fc917b8386243146d9838
parentb055a1dfe3a8918802c1e8da76ae12137502e340 (diff)
downloadvala-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.vala5
-rw-r--r--src/libvaladoc/html/htmlmarkupwriter.vala8
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;
}