Fix issue where immutable samplers are removed during descriptor update.

Suppress spurious debug message.
Minor syntax fix.
Update MoltenVK version to 1.0.41.
diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md
index 26e9a1c..590ce15 100644
--- a/Docs/Whats_New.md
+++ b/Docs/Whats_New.md
@@ -14,6 +14,15 @@
 
 
 
+MoltenVK 1.0.41
+---------------
+
+Released TBD
+
+- Fix issue where immutable samplers are removed during descriptor update.
+
+
+
 MoltenVK 1.0.40
 ---------------
 
diff --git a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
index 078c134..f18bfaf 100644
--- a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
+++ b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
@@ -50,7 +50,7 @@
  */
 #define MVK_VERSION_MAJOR   1
 #define MVK_VERSION_MINOR   0
-#define MVK_VERSION_PATCH   40
+#define MVK_VERSION_PATCH   41
 
 #define MVK_MAKE_VERSION(major, minor, patch)    (((major) * 10000) + ((minor) * 100) + (patch))
 #define MVK_VERSION     MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm b/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm
index 3004ece..28d3b89 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm
@@ -189,7 +189,7 @@
 		[msl appendLineMVK];
 		[msl appendLineMVK: @"}"];
 
-		MVKLogDebug("\n%s", msl.UTF8String);
+//		MVKLogDebug("\n%s", msl.UTF8String);
 
 		return newMTLFunction(msl, funcName);
 	}
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm
index 74d0b4a..bcf712d 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm
@@ -782,21 +782,18 @@
 	switch (descriptorType) {
 		case VK_DESCRIPTOR_TYPE_SAMPLER:
 		case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: {
-			auto* oldSamp = _mvkSampler;
-
-			const auto* pImgInfo = &get<VkDescriptorImageInfo>(pData, stride, srcIndex);
 			if (_hasDynamicSampler) {
+				auto* oldSamp = _mvkSampler;
+
+				const auto* pImgInfo = &get<VkDescriptorImageInfo>(pData, stride, srcIndex);
 				_mvkSampler = (MVKSampler*)pImgInfo->sampler;
 				if (_mvkSampler && _mvkSampler->getRequiresConstExprSampler()) {
 					_mvkSampler->reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkUpdateDescriptorSets(): Depth texture samplers using a compare operation can only be used as immutable samplers on this device.");
 				}
-			} else {
-				_mvkSampler = nullptr;
+
+				if (_mvkSampler) { _mvkSampler->retain(); }
+				if (oldSamp) { oldSamp->release(); }
 			}
-
-			if (_mvkSampler) { _mvkSampler->retain(); }
-			if (oldSamp) { oldSamp->release(); }
-
 			break;
 		}
 
@@ -816,7 +813,7 @@
 		case VK_DESCRIPTOR_TYPE_SAMPLER:
 		case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: {
 			auto& imgInfo = pImageInfo[dstIndex];
-			imgInfo.sampler = (VkSampler)_mvkSampler;
+			imgInfo.sampler = _hasDynamicSampler ? (VkSampler)_mvkSampler : nullptr;
 			break;
 		}
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm
index 8e220bb..a433703 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm
@@ -700,7 +700,7 @@
 					break;
 				}
 			}
-	}
+		}
 
 		const void* pData = getWriteParameters(pDescWrite->descriptorType, pDescWrite->pImageInfo,
 											   pDescWrite->pBufferInfo, pDescWrite->pTexelBufferView,