Index: src/wp-includes/class.wp-scripts.php
===================================================================
--- src/wp-includes/class.wp-scripts.php	(revision 36378)
+++ src/wp-includes/class.wp-scripts.php	(working copy)
@@ -20,7 +20,6 @@
 	public $base_url; // Full URL with trailing slash
 	public $content_url;
 	public $default_version;
-	public $in_footer = array();
 	public $concat = '';
 	public $concat_version = '';
 	public $do_concat = false;
@@ -117,13 +116,9 @@
 			return false;
 
 		if ( 0 === $group && $this->groups[$handle] > 0 ) {
-			$this->in_footer[] = $handle;
 			return false;
 		}
 
-		if ( false === $group && in_array($handle, $this->in_footer, true) )
-			$this->in_footer = array_diff( $this->in_footer, (array) $handle );
-
 		$obj = $this->registered[$handle];
 
 		if ( null === $obj->ver ) {
@@ -213,6 +208,33 @@
 	}
 
 	/**
+	 * Register a script.
+	 *
+	 * Registers the script if no script of that name already exists.
+	 *
+	 * @access public
+	 * @since 4.2 ??What should this be??
+	 *
+	 * @param string $handle Unique script name.
+	 * @param string $src    The script url.
+	 * @param array  $deps   Optional. An array of script handle strings on which this script depends.
+	 * @param string $ver    Optional. Version (used for cache busting).
+	 * @param mixed  $args   Optional. Custom property of the script. NOT the class property $args. Examples: 1 for in_footer.
+	 * @return bool True on success, false on failure.
+	 */
+	public function add( $handle, $src, $deps = array(), $ver = false, $args = null ) {
+		$in_footer = ( $args === 1 );
+
+		$result = parent::add( $handle, $src, $deps, $ver, $in_footer ? null : $args );
+
+		if ( $in_footer && $result ) {
+			$this->add_data( $handle, 'group', 1 );
+		}
+
+		return $result;
+	}
+
+	/**
 	 * Localizes a script, only if the script has already been added
 	 *
 	 * @param string $handle
@@ -256,10 +278,7 @@
 	 * @return bool Not already in the group or a lower group
 	 */
 	public function set_group( $handle, $recursion, $group = false ) {
-		if ( isset( $this->registered[$handle]->args ) && $this->registered[$handle]->args === 1 )
-			$grp = 1;
-		else
-			$grp = (int) $this->get_data( $handle, 'group' );
+		$grp = (int) $this->get_data( $handle, 'group' );
 
 		if ( false !== $group && $grp > $group )
 			$grp = $group;
