diff --git a/indra/viewer_components/updater/llupdatedownloader.cpp b/indra/viewer_components/updater/llupdatedownloader.cpp
index ab441aa74793422816ee8c304d0b32e88e9624e6..eccc25aeee76e5561207c2e44434d477844c7740 100644
--- a/indra/viewer_components/updater/llupdatedownloader.cpp
+++ b/indra/viewer_components/updater/llupdatedownloader.cpp
@@ -275,9 +275,14 @@ size_t LLUpdateDownloader::Implementation::onHeader(void * buffer, size_t size)
 size_t LLUpdateDownloader::Implementation::onBody(void * buffer, size_t size)
 {
 	if(mCancelled) return 0; // Forces a write error which will halt curl thread.
+	if((size == 0) || (buffer == 0)) return 0; 
 	
 	mDownloadStream.write(reinterpret_cast<const char *>(buffer), size);
-	return size;
+	if(mDownloadStream.bad()) {
+		return 0;
+	} else {
+		return size;
+	}
 }
 
 
diff --git a/indra/viewer_components/updater/scripts/windows/update_install.bat b/indra/viewer_components/updater/scripts/windows/update_install.bat
index 44ccef010b8151754c0b2e539668b212073e69e7..42e148a707e11433798ac33e3d2e56e86acac394 100644
--- a/indra/viewer_components/updater/scripts/windows/update_install.bat
+++ b/indra/viewer_components/updater/scripts/windows/update_install.bat
@@ -1,2 +1,3 @@
 start /WAIT %1 /SKIP_DIALOGS
-IF ERRORLEVEL 1 ECHO ERRORLEVEL > %2
+IF ERRORLEVEL 1 ECHO %ERRORLEVEL% > %2
+DEL %1