second BeOS patch from Marcin 'Shard' Konicki Daniel

* tree.c nanohttp.c threads.c: second BeOS patch from
  Marcin 'Shard' Konicki
Daniel
diff --git a/tree.c b/tree.c
index 0d984e2..59faab7 100644
--- a/tree.c
+++ b/tree.c
@@ -2375,10 +2375,22 @@
     /*
      * Allocate a new node
      */
-    if (ns == NULL)
-	cur = xmlNewDocRawNode(parent->doc, parent->ns, name, content);
-    else
-	cur = xmlNewDocRawNode(parent->doc, ns, name, content);
+    if (parent->type == XML_ELEMENT_NODE) {
+	if (ns == NULL)
+	    cur = xmlNewDocRawNode(parent->doc, parent->ns, name, content);
+	else
+	    cur = xmlNewDocRawNode(parent->doc, ns, name, content);
+    } else if ((parent->type == XML_DOCUMENT_NODE) ||
+	       (parent->type == XML_HTML_DOCUMENT_NODE)) {
+	if (ns == NULL)
+	    cur = xmlNewDocRawNode((xmlDocPtr) parent, NULL, name, content);
+	else
+	    cur = xmlNewDocRawNode((xmlDocPtr) parent, ns, name, content);
+    } else if (parent->type == XML_DOCUMENT_FRAG_NODE) {
+	    cur = xmlNewDocRawNode( parent->doc, ns, name, content);
+    } else {
+	return(NULL);
+    }
     if (cur == NULL) return(NULL);
 
     /*