diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp
index 0fc6a8a..37a82e9 100644
--- a/media/libmedia/mediaplayer.cpp
+++ b/media/libmedia/mediaplayer.cpp
@@ -148,10 +148,10 @@
         const sp<IMediaPlayerService>& service(getMediaPlayerService());
         if (service != 0) {
             sp<IMediaPlayer> player(service->create(getpid(), this, mAudioSessionId));
-            err = attachNewPlayer(player);
-            if (err == NO_ERROR) {
-                err = mPlayer->setDataSource(url, headers);
+            if (NO_ERROR != player->setDataSource(url, headers)) {
+                player.clear();
             }
+            err = attachNewPlayer(player);
         }
     }
     return err;
@@ -164,10 +164,10 @@
     const sp<IMediaPlayerService>& service(getMediaPlayerService());
     if (service != 0) {
         sp<IMediaPlayer> player(service->create(getpid(), this, mAudioSessionId));
-        err = attachNewPlayer(player);
-        if (err == NO_ERROR) {
-            err = mPlayer->setDataSource(fd, offset, length);
+        if (NO_ERROR != player->setDataSource(fd, offset, length)) {
+            player.clear();
         }
+        err = attachNewPlayer(player);
     }
     return err;
 }
@@ -179,10 +179,10 @@
     const sp<IMediaPlayerService>& service(getMediaPlayerService());
     if (service != 0) {
         sp<IMediaPlayer> player(service->create(getpid(), this, mAudioSessionId));
-        err = attachNewPlayer(player);
-        if (err == NO_ERROR) {
-            err = mPlayer->setDataSource(source);
+        if (NO_ERROR != player->setDataSource(source)) {
+            player.clear();
         }
+        err = attachNewPlayer(player);
     }
     return err;
 }
