~rdoering/ubuntu/karmic/erlang/fix-535090

« back to all changes in this revision

Viewing changes to erts/emulator/beam/dist.c

  • Committer: Bazaar Package Importer
  • Author(s): Sergei Golovan
  • Date: 2009-02-15 16:42:52 UTC
  • mfrom: (1.1.13 upstream)
  • mto: (3.3.1 squeeze)
  • mto: This revision was merged to the branch mainline in revision 17.
  • Revision ID: james.westby@ubuntu.com-20090215164252-dxpjjuq108nz4noa
Upload to unstable after lenny is released.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1860
1860
 
1861
1861
    if (dep->status & ERTS_DE_SFLG_INITIALIZING) {
1862
1862
        /* This should normally never happen. If it happen,
1863
 
           reschedule until not initializing and decide then
 
1863
           yield until not initializing and decide then
1864
1864
           if we should succeed or fail. */
1865
 
        goto reschedule;
 
1865
        erts_smp_dist_entry_unlock(dep);
 
1866
        erts_deref_dist_entry(dep);
 
1867
        ERTS_BIF_YIELD3(bif_export[BIF_setnode_3], BIF_P,
 
1868
                        BIF_ARG_1, BIF_ARG_2, BIF_ARG_3);
1866
1869
    }
1867
1870
 
1868
1871
    if (dep->cid == BIF_ARG_2)
1933
1936
    erts_deref_dist_entry(dep);
1934
1937
    BIF_RET(am_true);
1935
1938
 
1936
 
 reschedule:
1937
 
    erts_smp_dist_entry_unlock(dep);
1938
 
    erts_deref_dist_entry(dep);
1939
 
    BIF_ERROR(BIF_P, RESCHEDULE);
1940
 
 
1941
1939
 error_de:
1942
1940
    dep->status &= ~ERTS_DE_SFLG_INITIALIZING;
1943
1941
    erts_smp_dist_entry_unlock(dep);