Index: src/wp-includes/option.php
===================================================================
--- src/wp-includes/option.php	(revision 28064)
+++ src/wp-includes/option.php	(working copy)
@@ -240,9 +240,12 @@
 	if ( is_object( $value ) )
 		$value = clone $value;
 
-	$value = sanitize_option( $option, $value );
 	$old_value = get_option( $option );
+	if ( false === $old_value )
+		return add_option( $option, $value );
 
+	$value = sanitize_option( $option, $value );
+
 	/**
 	 * Filter a specific option before its value is (maybe) serialized and updated.
 	 *
@@ -270,9 +273,6 @@
 	if ( $value === $old_value )
 		return false;
 
-	if ( false === $old_value )
-		return add_option( $option, $value );
-
 	$serialized_value = maybe_serialize( $value );
 
 	/**
@@ -1166,6 +1166,8 @@
 	wp_protect_special_option( $option );
 
 	$old_value = get_site_option( $option );
+	if ( false === $old_value )
+		return add_site_option( $option, $value );
 
 	/**
 	 * Filter a specific site option before its value is updated.
@@ -1183,9 +1185,6 @@
 	if ( $value === $old_value )
 		return false;
 
-	if ( false === $old_value )
-		return add_site_option( $option, $value );
-
 	$notoptions_key = "{$wpdb->siteid}:notoptions";
 	$notoptions = wp_cache_get( $notoptions_key, 'site-options' );
 	if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
