DI: fix inspiring Segfault
a bloody closure that bangs itself away....
This commit is contained in:
parent
f0c8928301
commit
b776ce568f
2 changed files with 12 additions and 19 deletions
|
|
@ -144,12 +144,10 @@ class Depend
|
|||
if (!instance)
|
||||
{
|
||||
if (!factory)
|
||||
{
|
||||
instance = singleton.buildInstance();
|
||||
factory = disabledFactory;
|
||||
}
|
||||
instance = singleton.buildInstance();
|
||||
else
|
||||
instance = factory();
|
||||
factory = disabledFactory;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -219,13 +217,6 @@ class DependInject
|
|||
Depend<SRV>::instance = stashInstance;
|
||||
}
|
||||
|
||||
static void
|
||||
disableFactory()
|
||||
{
|
||||
ClassLock<SRV> guard;
|
||||
Depend<SRV>::factory = Depend<SRV>::disabledFactory;
|
||||
}
|
||||
|
||||
static void
|
||||
activateServiceAccess (SRV& newInstance)
|
||||
{
|
||||
|
|
@ -255,7 +246,6 @@ class DependInject
|
|||
static InstanceHolder<SUB> singleton;
|
||||
installFactory ([&]()
|
||||
{
|
||||
disableFactory();
|
||||
return singleton.buildInstance();
|
||||
});
|
||||
}
|
||||
|
|
@ -320,7 +310,6 @@ class DependInject
|
|||
temporarilyInstallAlternateFactory (origInstance_, origFactory_
|
||||
,[this]()
|
||||
{
|
||||
disableFactory();
|
||||
mock_.reset(new MOC{});
|
||||
return mock_.get();
|
||||
});
|
||||
|
|
@ -451,19 +440,19 @@ main (int, char**)
|
|||
SHOW_EXPR( checksum );
|
||||
SHOW_EXPR( mockDum->probe() );
|
||||
SHOW_EXPR( checksum );
|
||||
mockDum->offset = 20;
|
||||
mockDum->offset = -4;
|
||||
SHOW_EXPR( dumm().probe() );
|
||||
|
||||
VERIFY_ERROR (LIFECYCLE, mockDummy3->probe() );
|
||||
CHECK (!mockDummy3);
|
||||
SHOW_EXPR( checksum );
|
||||
SHOW_EXPR( dep3().probe() );
|
||||
SHOW_EXPR( checksum );
|
||||
CHECK ( mockDummy3);
|
||||
SHOW_EXPR( mockDummy3->probe() );
|
||||
SHOW_EXPR( checksum );
|
||||
mockDummy3->offset = 10;
|
||||
mockDummy3->offset = 19;
|
||||
SHOW_EXPR( dep3().probe() );
|
||||
mockDum->offset = 50;
|
||||
mockDum->offset = -6;
|
||||
SHOW_EXPR( dep3().probe() );
|
||||
SHOW_EXPR( dumm().probe() );
|
||||
SHOW_EXPR( checksum );
|
||||
|
|
@ -490,7 +479,7 @@ main (int, char**)
|
|||
SHOW_EXPR( mockDummy31->probe() );
|
||||
SHOW_EXPR( service->probe() );
|
||||
CHECK (mockDummy31->offset != service->offset);
|
||||
service->offset = 35;
|
||||
service->offset = 20;
|
||||
SHOW_EXPR( dep3().probe() );
|
||||
SHOW_EXPR( mockDummy31->probe() );
|
||||
SHOW_EXPR( service->probe() );
|
||||
|
|
@ -502,8 +491,10 @@ main (int, char**)
|
|||
}
|
||||
SHOW_EXPR( checksum );
|
||||
VERIFY_ERROR (LIFECYCLE, dep3().probe() );
|
||||
SHOW_EXPR( dumm().probe() );
|
||||
SHOW_EXPR( checksum );
|
||||
|
||||
|
||||
cout << "\n.gulp.\n";
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -26878,7 +26878,9 @@
|
|||
</node>
|
||||
<node CREATED="1521213011289" ID="ID_1360216253" MODIFIED="1521213015444" TEXT="Vereinheitlichung">
|
||||
<node CREATED="1521213017168" ID="ID_1734833663" MODIFIED="1521213021084" TEXT="alle Varianten">
|
||||
<node CREATED="1521213036670" ID="ID_1288760048" MODIFIED="1521213042401" TEXT="sind move-only"/>
|
||||
<node CREATED="1521213036670" ID="ID_1288760048" MODIFIED="1521416387077" TEXT="sind move-only">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1521213116611" ID="ID_1639434185" MODIFIED="1521213127773" TEXT="enthalten eine Closure über einen konkreten Ctor"/>
|
||||
<node CREATED="1521213855997" ID="ID_1959805856" MODIFIED="1521213868751" TEXT="installieren eine mit dieser parametrisierte Factory"/>
|
||||
<node CREATED="1521236923444" ID="ID_909632246" MODIFIED="1521236929411" TEXT="irgendwie...">
|
||||
|
|
|
|||
Loading…
Reference in a new issue