diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 6c128858645074d5f115014431707dfae9da4dcd..fc6023beb2eb036c983128baebe788ab1c3eb510 100755
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -1051,7 +1051,7 @@ void LLPreviewGesture::saveIfNeeded()
 		return;
 	}
 
-#if 0
+#if 1
     // Copy the UI into a gesture
     LLMultiGesture* gesture = createGesture();
 
@@ -1123,7 +1123,7 @@ void LLPreviewGesture::saveIfNeeded()
             {
                 delayedUpload = true;
 
-                LLCoprocedureManager::CoProcedure_t proc = boost::bind(&LLViewerAssetUpload::AssetInventoryUploadCoproc, _1, _2, _3, url, uploadInfo);
+                LLCoprocedureManager::CoProcedure_t proc = boost::bind(&LLViewerAssetUpload::AssetInventoryUploadCoproc, _1, _2, url, uploadInfo);
 
                 LLCoprocedureManager::getInstance()->enqueueCoprocedure("LLViewerAssetUpload::AssetInventoryUploadCoproc", proc);
             }
diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp
index f1a253a421f22eabc1cdc6ae51f93681cb714cfe..910e1dc6c5b93854937a4fc5e32ef4ace96f30c1 100644
--- a/indra/newview/llviewerassetupload.cpp
+++ b/indra/newview/llviewerassetupload.cpp
@@ -449,7 +449,8 @@ LLBufferedAssetUploadInfo::LLBufferedAssetUploadInfo(LLUUID itemId, LLAssetType:
     mTaskId(LLUUID::null),
     mContents(buffer),
     mInvnFinishFn(finish),
-    mTaskFinishFn(NULL)
+    mTaskFinishFn(NULL),
+    mStoredToVFS(false)
 {
     setItemId(itemId);
     setAssetType(assetType);
@@ -463,7 +464,8 @@ LLBufferedAssetUploadInfo::LLBufferedAssetUploadInfo(LLUUID taskId, LLUUID itemI
     mTaskId(taskId),
     mContents(buffer),
     mInvnFinishFn(NULL),
-    mTaskFinishFn(finish)
+    mTaskFinishFn(finish),
+    mStoredToVFS(false)
 {
     setItemId(itemId);
     setAssetType(assetType);
@@ -481,6 +483,9 @@ LLSD LLBufferedAssetUploadInfo::prepareUpload()
     file.setMaxSize(size);
     file.write((U8*)mContents.c_str(), size);
 
+    mStoredToVFS = true;
+
+
     return LLSD().with("success", LLSD::Boolean(true));
 }
 
@@ -502,6 +507,12 @@ LLUUID LLBufferedAssetUploadInfo::finishUpload(LLSD &result)
     LLUUID newAssetId = result["new_asset"].asUUID();
     LLUUID itemId = getItemId();
 
+    if (mStoredToVFS)
+    {
+        LLAssetType::EType assetType(getAssetType());
+        gVFS->renameFile(getAssetId(), assetType, newAssetId, assetType);
+    }
+
     if (mTaskUpload)
     {
         LLUUID taskId = getTaskId();
@@ -542,8 +553,8 @@ LLUUID LLBufferedAssetUploadInfo::finishUpload(LLSD &result)
 
 //=========================================================================
 /*static*/
-void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &httpAdapter, const LLUUID &id,
-    std::string url, NewResourceUploadInfo::ptr_t uploadInfo)
+void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &httpAdapter, 
+    const LLUUID &id, std::string url, NewResourceUploadInfo::ptr_t uploadInfo)
 {
     LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
 
diff --git a/indra/newview/llviewerassetupload.h b/indra/newview/llviewerassetupload.h
index 351c2267b7cb6e8d593ad91754e528dd96ae10fd..b80166a8742a0392d38d6431de29b3bc018c62c8 100644
--- a/indra/newview/llviewerassetupload.h
+++ b/indra/newview/llviewerassetupload.h
@@ -177,6 +177,7 @@ class LLBufferedAssetUploadInfo : public NewResourceUploadInfo
     std::string         mContents;
     invnUploadFinish_f  mInvnFinishFn;
     taskUploadFinish_f  mTaskFinishFn;
+    bool                mStoredToVFS;
 };
 
 class LLScriptAssetUpload : public LLBufferedAssetUploadInfo