diff --git a/adform.admin.inc b/adform.admin.inc
index 82518e27..5cc1b074 100644
--- a/adform.admin.inc
+++ b/adform.admin.inc
@@ -44,17 +44,15 @@ function adform_admin_settings_form($form_state) {
  * Cleans up the hostnames and path mappings.
  */
 function adform_admin_settings_form_validate($form, &$form_state) {
-  $hostnames = explode("\n", trim($form_state['values']['adform_hostnames']));
-  foreach ($hostnames as &$hostname) {
-    $hostname = trim($hostname);
-  }
+  $hostnames = _adform_admin_textarea_to_array($form_state['values']['adform_hostnames']);
+
   // Set the value to the split and trimmed array.
   form_set_value($form['adform_hostnames'], $hostnames, $form_state);
 
   // Process the mapping into an array easier to deal with.
-  $mappings = array_filter(explode("\n", trim($form_state['values']['adform_mappings'])));
+  $mappings = _adform_admin_textarea_to_array($form_state['values']['adform_mappings']);
+  $mappings_var = array();
   if (!empty($mappings)) {
-    $mappings_var = array();
     foreach ($mappings as $mapping) {
       $parts = explode('|', trim($mapping));
       if (sizeof($parts) != 2) {
@@ -66,6 +64,27 @@ function adform_admin_settings_form_validate($form, &$form_state) {
         $mappings_var[$pattern] = $path;
       }
     }
-    form_set_value($form['adform_mappings'], $mappings_var, $form_state);
   }
+  form_set_value($form['adform_mappings'], $mappings_var, $form_state);
+}
+
+/**
+ * Converts multi line textarea input to an array.
+ *
+ * @param string $input
+ *   Multi line input
+ *
+ * @return array
+ *   Converted input.
+ */
+function _adform_admin_textarea_to_array($input) {
+  $input = str_replace(array("\r\n", "\r"), "\n", $input);
+  $input = trim($input);
+
+  $result = array();
+  foreach (explode("\n", $input) as $row) {
+    $result[] = trim($row);
+  }
+
+  return array_filter($result);
 }
