A possibly related observation. Below, I get different results depending only on whether S is in full or sparse form:
n = 5;
m = 3;
S = sparse(n, m);
v=nan(n, 1); 
D=sparse(diag(v));
result3 = full(D*full(S))
result3 = 5×3
   NaN   NaN   NaN
   NaN   NaN   NaN
   NaN   NaN   NaN
   NaN   NaN   NaN
   NaN   NaN   NaN
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
result4 = full(D*S)
result4 = 5×3
     0     0     0
     0     0     0
     0     0     0
     0     0     0
     0     0     0
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>



