diff --git a/src/document/html/parser/forms.c b/src/document/html/parser/forms.c
index d35d9ca2a..a2c7bc1a2 100644
--- a/src/document/html/parser/forms.c
+++ b/src/document/html/parser/forms.c
@@ -146,7 +146,8 @@ html_button(struct html_context *html_context, unsigned char *a,
unsigned char *al;
struct form_control *fc;
enum form_type type = FC_SUBMIT;
- int cp = html_context->part->document->cp;
+ int cp = (html_context->part && html_context->part->document) ?
+ html_context->part->document->cp : html_context->options->cp;
html_focusable(html_context, a);
@@ -266,7 +267,8 @@ html_input(struct html_context *html_context, unsigned char *a,
{
unsigned char *al;
struct form_control *fc;
- int cp = html_context->part->document->cp;
+ int cp = (html_context->part && html_context->part->document) ?
+ html_context->part->document->cp : html_context->options->cp;
fc = init_form_control(FC_TEXT, a, html_context);
if (!fc) return;
diff --git a/src/document/html/parser/link.c b/src/document/html/parser/link.c
index 232e17bb4..2cecdf830 100644
--- a/src/document/html/parser/link.c
+++ b/src/document/html/parser/link.c
@@ -215,7 +215,8 @@ html_img_do(unsigned char *a, unsigned char *object_src,
unsigned char *usemap_attr;
struct document_options *options = html_context->options;
int display_style = options->image_link.display_style;
- int cp = html_context->part->document->cp;
+ int cp = (html_context->part && html_context->part->document) ?
+ html_context->part->document->cp : html_context->options->cp;
/* Note about display_style:
* 0 means always display IMG