diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp
index a1420fba173ac417e59137467b22ab1f295408b8..f3b6207488e3a8011e06d01dd7063fb0a2777548 100644
--- a/indra/newview/llmodelpreview.cpp
+++ b/indra/newview/llmodelpreview.cpp
@@ -529,12 +529,12 @@ void LLModelPreview::rebuildUploadData()
                         LLFloaterModelPreview::addStringToLog(out, false);
                     }
                 }
-                if (!mLastSpecifiedPhysicsModelOriginalName.empty() && !lod_model && (i == LLModel::LOD_PHYSICS))
+                if (mLastSpecifiedPhysicsP && !lod_model && (i == LLModel::LOD_PHYSICS))
                 {
                     // Despite the various strategies above, if we don't now have a physics model, we're going to end up with decomposition.
                     // That's ok, but in the case where someone supplied a physics file, that's probably not what they wanted.
                     std::ostringstream out;
-                    out << "Reusing previously matched physics model " << mLastSpecifiedPhysicsModelOriginalName;
+                    out << "Reusing physics model " << mLastSpecifiedPhysicsModelOriginalName << " for " << instance.mLabel;
                     LL_INFOS() << out.str() << LL_ENDL;
                     LLFloaterModelPreview::addStringToLog(out, false);
                     lod_model = mLastSpecifiedPhysicsP;
@@ -1204,6 +1204,11 @@ void LLModelPreview::loadModelCallback(S32 loaded_lod)
                             }
                         }
                     }
+                    else if ((loaded_lod == LLModel::LOD_PHYSICS) && (mModel[loaded_lod].size() == 1))
+                    {
+                        mLastSpecifiedPhysicsModelOriginalName = stripSuffix(mModel[loaded_lod][0]->mLabel);
+                        mLastSpecifiedPhysicsP = mModel[loaded_lod][0];
+                    }
                 }
             }
         }