#include "svgtiny_strings.h"
#undef SVGTINY_STRING_ACTION2
+ /* Intern SVG's xmlns separately because it's an lwc_string
+ * and not a dom_string. We initialise its pointer to NULL
+ * because, during finalisation, the test to see if it needs
+ * to be free'd looks for NULL. Returning a LIBDOM_ERROR on
+ * failure is not perfect but it's the closest of the
+ * available options. */
+ state->interned_svg_xmlns = NULL;
+ if (lwc_intern_string("http://www.w3.org/2000/svg",
+ 26,
+ &state->interned_svg_xmlns) != lwc_error_ok) {
+ return svgtiny_LIBDOM_ERROR;
+ }
+
/* get graphic dimensions */
state->viewport_width = viewport_width;
state->viewport_height = viewport_height;
#include "svgtiny_strings.h"
#undef SVGTINY_STRING_ACTION2
+ if (state->interned_svg_xmlns != NULL) {
+ lwc_string_unref(state->interned_svg_xmlns);
+ }
+
css_code = css_select_ctx_destroy(state->select_ctx);
if (css_code != CSS_OK) {
return svgtiny_LIBCSS_ERROR;
#include "svgtiny_strings.h"
#undef SVGTINY_STRING_ACTION2
+ /* Where we store the interned copy of the SVG XML namespace,
+ *
+ * http://www.w3.org/2000/svg
+ *
+ * We handle it separately it has a different type
+ * (lwc_string) than those above (dom_string).
+ */
+ lwc_string *interned_svg_xmlns;
};
struct svgtiny_list;