dns-and-server-ref-counts-20040530
[openafs.git] / src / WINNT / afsd / cm_scache.c
index 5b5694c..2b8eaf7 100644 (file)
@@ -307,7 +307,7 @@ long cm_GetSCache(cm_fid_t *fidp, cm_scache_t **outScpp, cm_user_t *userp,
 
                lock_ObtainMutex(&cm_Freelance_Lock);
                scp->length.LowPart = strlen(mp)+4;
-               scp->mountPointStringp=malloc(strlen(mp));
+               scp->mountPointStringp=malloc(strlen(mp)+1);
                strcpy(scp->mountPointStringp,mp);
                lock_ReleaseMutex(&cm_Freelance_Lock);
 
@@ -644,12 +644,14 @@ sleep:
 
                /* wait here, then try again */
                osi_Log1(afsd_logp, "CM SyncOp sleeping scp %x", (long) scp);
+        if ( scp->flags & CM_SCACHEFLAG_WAITING ) 
+            osi_Log1(afsd_logp, "CM SyncOp CM_SCACHEFLAG_WAITING already set for 0x%x", scp);
                scp->flags |= CM_SCACHEFLAG_WAITING;
                if (bufLocked) lock_ReleaseMutex(&bufp->mx);
-                osi_SleepM((long) &scp->flags, &scp->mx);
-                osi_Log0(afsd_logp, "CM SyncOp woke!");
-               if (bufLocked) lock_ObtainMutex(&bufp->mx);
-                lock_ObtainMutex(&scp->mx);
+        osi_SleepM((long) &scp->flags, &scp->mx);
+        osi_Log0(afsd_logp, "CM SyncOp woke!");
+        if (bufLocked) lock_ObtainMutex(&bufp->mx);
+        lock_ObtainMutex(&scp->mx);
         } /* big while loop */
         
         /* now, update the recorded state for RPC-type calls */