Index: src/wp-includes/taxonomy.php
===================================================================
--- src/wp-includes/taxonomy.php	(revision 41795)
+++ src/wp-includes/taxonomy.php	(working copy)
@@ -1857,7 +1857,7 @@
  * @return array|WP_Error The requested term data or empty array if no terms found.
  *                        WP_Error if any of the $taxonomies don't exist.
  */
-function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
+function wp_get_object_terms( $object_ids, $taxonomies, $args = array() ) {
 	if ( empty( $object_ids ) || empty( $taxonomies ) )
 		return array();
 
@@ -1912,7 +1912,12 @@
 
 	// Taxonomies registered without an 'args' param are handled here.
 	if ( ! empty( $taxonomies ) ) {
-		$terms = array_merge( $terms, get_terms( $args ) );
+		$terms_with_args = $test_array = get_terms( $args );
+		if ( array_values( $test_array ) === $test_array ) {
+			$terms = array_merge( $terms, $terms_with_args );
+		} else {
+			$terms = $terms + $terms_with_args;
+		}
 	}
 
 	/**
Index: tests/phpunit/tests/admin/includesPost.php
===================================================================
--- tests/phpunit/tests/admin/includesPost.php	(revision 41795)
+++ tests/phpunit/tests/admin/includesPost.php	(working copy)
@@ -205,6 +205,54 @@
 	}
 
 	/**
+	 * @ticket 41293
+	 */
+	public function test_wp_get_post_terms_should_allow_same_args_with_the_get_terms() {
+		wp_set_current_user( self::$editor_id );
+
+		register_taxonomy( 'wptests_tax', array( 'post' ) );
+		$t1 = self::factory()->term->create( array(
+			'taxonomy' => 'wptests_tax',
+			'name' => 'foo',
+			'slug' => 'bar',
+		) );
+		$t2 = self::factory()->term->create( array(
+			'taxonomy' => 'wptests_tax',
+			'name' => 'bar',
+			'slug' => 'foo',
+		) );
+
+		$post_data = array(
+			'post_ID' => self::$post_id,
+			'tax_input' => array(
+				'wptests_tax' => 'foo,baz',
+			),
+		);
+
+		edit_post( $post_data );
+
+		$expect = wp_get_post_terms( self::$post_id, 'wptests_tax', array(
+			'fields' => 'ids',
+		) );
+
+		$found1 = array_keys( wp_get_post_terms( self::$post_id, 'wptests_tax', array(
+			'fields' => 'id=>parent',
+		) ) );
+
+		$found2 = array_keys( wp_get_post_terms( self::$post_id, 'wptests_tax', array(
+			'fields' => 'id=>slug',
+		) ) );
+
+		$found3 = array_keys( wp_get_post_terms( self::$post_id, 'wptests_tax', array(
+			'fields' => 'id=>name',
+		) ) );
+
+		$this->assertSame( $expect, $found1 );
+		$this->assertSame( $expect, $found2 );
+		$this->assertSame( $expect, $found3 );
+	}
+
+	/**
 	 * @ticket 27792
 	 */
 	public function test_bulk_edit_posts_stomping() {
