diff -urp --strip-trailing-cr ../category/wrappers/taxonomy/taxonomy.module.php ./wrappers/taxonomy/taxonomy.module.php
--- ../category/wrappers/taxonomy/taxonomy.module.php	2009-03-05 23:23:56.000000000 +0100
+++ ./wrappers/taxonomy/taxonomy.module.php	2009-05-16 20:41:13.000000000 +0200
@@ -862,6 +862,29 @@ function taxonomy_nodeapi($node, $op, $a
 }
 
 /**
+ * Implementation of hook_form_alter()
+ */
+function taxonomy_form_alter(&$form, $form_state, $form_id) {
+  if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) {
+    // Add own validation handler before any existing ones, to get a chance to
+    // modify submitted form data before other modules see it.
+    array_unshift($form['#validate'], '_taxonomy_node_form_validate');
+  }
+}
+
+/**
+ * Node form validation handler
+ */
+function _taxonomy_node_form_validate(&$form, &$form_state) {
+  // Inject taxonomy into the form.
+  // This is needed for modules such as forum and simplenews,
+  // who check for taxonomy during validation and early submission.
+  if (empty($form_state['values']['taxonomy']) && !empty($form_state['values']['categories'])) {
+    $form_state['values']['taxonomy'] = $form_state['values']['categories'];
+  }
+}
+
+/**
  * Implementation of hook_help().
  */
 function taxonomy_help($section) {
