Skip to content

Commit 2f18cf7

Browse files
committed
80 FR 10284: for the same period of admission as the principal
1 parent a668d79 commit 2f18cf7

7 files changed

Lines changed: 318 additions & 0 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[00:00.10]<00:00.10>8 <00:00.36>CFR <00:01.24>214.2 <00:03.24>(h) <00:03.58>(9) <00:03.92>(iv)
2+
[00:05.14]<00:05.14>The <00:05.30>spouse <00:05.70>and <00:05.90>children <00:06.26>of <00:06.36>an <00:06.68>H <00:06.82>nonimmigrant
3+
[00:07.74]<00:07.74>May <00:07.90>be <00:08.02>admitted
4+
[00:08.88]<00:08.88>As <00:09.26>H-4 <00:09.68>nonimmigrants <00:10.34>for <00:10.46>the <00:10.62>same <00:10.96>period <00:11.32>of <00:11.44>admission
5+
[00:12.56]<00:12.56>As <00:12.70>the <00:12.84>principal <00:13.32>spouse <00:13.80>or <00:14.02>parent
309 KB
Binary file not shown.

system_prune/BUILD

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
load("@rules_cc//cc:cc_test.bzl", "cc_test")
2+
load("//tools/build_defs:music.bzl", "music_track")
3+
4+
music_track(
5+
name = "law",
6+
src = "8_cfr_214.2_h_9_iv.mp3",
7+
visibility = ["//visibility:public"],
8+
)
9+
10+
music_track(
11+
name = "play",
12+
src = "system_prune.mp3",
13+
visibility = ["//visibility:public"],
14+
)
15+
16+
cc_test(
17+
name = "test",
18+
srcs = ["system_prune_test.cc"],
19+
deps = ["@googletest//:gtest_main"],
20+
)

system_prune/README.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# system prune
2+
3+
> 8 CFR 214.2(h)(9)(iv)
4+
> The spouse and children of an H nonimmigrant [...]
5+
> May be admitted [...]
6+
> As H-4 nonimmigrants for the same period of admission [...]
7+
> As the principal spouse or parent
8+
9+
## Intro
10+
11+
The system integrity must be maintained
12+
Every object must be accounted for
13+
If there is no path to the root... the memory is simply freed
14+
15+
## Verse 1
16+
17+
Yo, let me tell you 'bout the allocation of a man named Luis
18+
Allocated on the heap, trying to get through this
19+
New instance in the city, address randomly assigned
20+
Leaving the null space of the past far behind
21+
He's an object in the memory, looking for a link
22+
A connection to the Root before the ship starts to sink
23+
The Root is the Citizen, the permanent state
24+
The only thing that saves you from a garbage-collected fate
25+
Luis finds a job, that's a Weak Reference at best
26+
Doesn't stop the sweep, doesn't pass the test
27+
But he finds a sponsor, a boss with a badge and a seal
28+
Now he's got a Strong Pointer, now the status is real
29+
He locks in, initializes, settles the code
30+
Brings his daughter Val to share the heavy load
31+
She's a child object, dependent on the sire
32+
Living on the wire, walking through the fire
33+
As long as Dad is pointed to, the daughter is safe
34+
Two valid objects occupying up the space
35+
36+
## Chorus
37+
38+
It's the ARC, the Automatic Reference Count
39+
They checking every life, yeah, they checking the amount
40+
Do you have a chain? Does it lead to the ground?
41+
Or are you floating in the heap, waiting to be found?
42+
One broken link, and the logic is cold
43+
Retain cycle broken, story untold
44+
System sweep comes, and the screen goes dark
45+
Collected by the logic of the ARC
46+
47+
## Verse 2
48+
49+
Years go by, the runtime is smooth
50+
Val is 18 now, finding her groove
51+
She's got friends, got grades, got a life in the town
52+
Those are Weak Pointers, they can't hold her down
53+
See, the system doesn't care if the neighbors know your name
54+
If the legal chain breaks, it's the end of the game
55+
Luis gets sick, the exception is thrown
56+
A fatal error in the body, chilled to the bone
57+
The sponsor shuts down, the contract is void
58+
The strong pointer vanishes, the link is destroyed
59+
Luis passes on. Deallocated. Gone
60+
But the tragedy is Val has to carry it on
61+
See, the chain was through him. Now the parent is `null`
62+
The system runs a check, and the silence is dull
63+
She's a Dangling Pointer, pointing to a ghost
64+
Still standing in the memory, but she lost her host
65+
No path to the Root, no line to the crown
66+
Just an isolated cycle waiting to be taken down
67+
68+
## Bridge
69+
70+
She tries to re-link
71+
Find a new address
72+
Panic in the logic
73+
System under stress
74+
She marries for the paper? No, the validation fails
75+
Tries to get a visa? But the latency prevails
76+
The Garbage Collector doesn't sleep, doesn't weep
77+
It just scans through the heap, creeping while you sleep
78+
It traverses the graph
79+
It looks for the path
80+
If Reachability is zero?
81+
Then you face the math
82+
83+
## Verse 3
84+
85+
The knock on the door is the execution line
86+
"0 references found." You ran out of time
87+
They don't see a person, they just see a leak
88+
A block of memory that the OS doesn't seek
89+
Val screams she belongs, she's part of the app
90+
But the source code is rigid, caught in the trap
91+
They sweep her away, clear the memory block
92+
Reclaim the resources, turn the key in the lock
93+
It's efficient. It's clean. It's optimized code
94+
But it's a family destroyed on the side of the road
95+
Now the space is marked "Free," ready for the new
96+
While Val is deleted from the only world she knew
97+
98+
## Outro
99+
100+
Yeah
101+
Just bits and bytes
102+
Just logic gates
103+
Zeroes and ones
104+
105+
Memory reclaimed. System stable. Ready for next allocation

system_prune/system_prune.lrc

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
[00:01.08]<00:01.08>The <00:01.20>system <00:01.60>integrity <00:02.22>must <00:02.44>be <00:02.58>maintained
2+
[00:04.82]<00:04.82>Every <00:05.16>object <00:06.80>must <00:07.02>be <00:07.12>accounted <00:07.72>for
3+
[00:10.40]<00:10.40>If <00:10.54>there <00:10.68>is <00:10.82>no <00:11.10>path <00:11.55>to <00:11.64>the <00:11.78>root... <00:12.63>the <00:12.84>memory <00:13.28>is <00:13.52>simply <00:14.04>freed
4+
[00:14.70]<00:14.70>Yo, <00:15.36>let <00:15.63>me <00:15.63>tell <00:15.86>you <00:15.97>'bout <00:16.18>the <00:16.36>allocation <00:17.06>of <00:17.20>a <00:17.34>man <00:17.66>named <00:17.94>Luis
5+
[00:18.72]<00:18.72>Allocated <00:19.36>on <00:19.50>the <00:19.66>heap, <00:19.92>trying <00:20.14>to <00:20.30>get <00:20.58>through <00:20.82>this
6+
[00:21.16]<00:21.16>New <00:21.28>instance <00:21.66>in <00:21.78>the <00:21.92>city, <00:22.28>address <00:22.80>randomly <00:23.28>assigned
7+
[00:23.80]<00:23.80>Leaving <00:24.10>the <00:24.28>null <00:24.50>space <00:24.92>of <00:25.04>the <00:25.22>past <00:25.60>far <00:25.90>behind
8+
[00:26.60]<00:26.60>He's <00:26.78>an <00:26.92>object <00:27.28>in <00:27.40>the <00:27.56>memory, <00:28.22>looking <00:28.56>for <00:28.76>a <00:28.92>link
9+
[00:29.20]<00:29.20>A <00:29.36>connection <00:29.86>to <00:30.02>the <00:30.14>Root <00:30.38>before <00:30.66>the <00:30.80>ship <00:31.02>starts <00:31.34>to <00:31.50>sink
10+
[00:32.00]<00:32.00>The <00:32.18>Root <00:32.50>is <00:32.64>the <00:32.82>Citizen, <00:33.32>the <00:33.48>permanent <00:33.98>state
11+
[00:34.36]<00:34.36>The <00:34.52>only <00:34.78>thing <00:34.92>that <00:35.06>saves <00:35.36>you <00:35.46>from <00:35.66>a <00:35.78>garbage-collected <00:36.80>fate
12+
[00:37.10]<00:37.10>Luis <00:37.42>finds <00:37.68>a <00:37.80>job, <00:38.10>that's <00:38.30>a <00:38.46>Weak <00:38.74>Reference <00:39.10>at <00:39.30>best
13+
[00:39.76]<00:39.76>Doesn't <00:40.02>stop <00:40.26>the <00:40.43>sweep, <00:41.04>doesn't <00:41.40>pass <00:41.68>the <00:41.90>test
14+
[00:42.22]<00:42.22>But <00:42.30>he <00:42.40>finds <00:42.58>a <00:42.66>sponsor, <00:43.26>a <00:43.40>boss <00:43.72>with <00:43.86>a <00:44.04>badge <00:44.28>and <00:44.38>a <00:44.54>seal
15+
[00:45.04]<00:45.04>Now <00:45.20>he's <00:45.36>got <00:45.54>a <00:45.66>Strong <00:46.02>Pointer, <00:46.38>now <00:46.50>the <00:46.62>status <00:47.02>is <00:47.20>real
16+
[00:47.50]<00:47.50>He <00:47.68>locks <00:48.04>in, <00:48.18>initializes, <00:49.30>settles <00:49.62>the <00:49.78>code
17+
[00:50.28]<00:50.28>Brings <00:50.48>his <00:50.62>daughter <00:50.98>Val <00:51.30>to <00:51.58>share <00:51.82>the <00:51.96>heavy <00:52.26>load
18+
[00:52.90]<00:52.90>She's <00:53.10>a <00:53.20>child <00:53.68>object, <00:54.42>dependent <00:54.96>on <00:55.08>the <00:55.24>sire
19+
[00:55.92]<00:55.92>Living <00:56.28>on <00:56.40>the <00:56.58>wire, <00:57.08>walking <00:57.52>through <00:57.68>the <00:57.92>fire
20+
[00:58.38]<00:58.38>As <00:58.52>long <00:58.74>as <00:58.86>Dad <00:59.04>is <00:59.22>pointed <00:59.54>to, <00:59.73>the <00:59.84>daughter <01:00.18>is <01:00.36>safe
21+
[01:00.68]<01:00.68>Two <01:00.86>valid <01:01.26>objects <01:01.82>occupying <01:02.60>up <01:02.76>the <01:02.92>space
22+
[01:03.48]<01:03.48>It's <01:03.66>the <01:03.88>ARC, <01:04.66>the <01:04.86>Automatic <01:05.48>Reference <01:05.84>Count
23+
[01:06.28]<01:06.28>They <01:06.46>checking <01:06.82>every <01:07.10>life, <01:07.46>yeah, <01:07.60>they <01:07.78>checking <01:08.12>the <01:08.34>amount
24+
[01:08.74]<01:08.74>Do <01:08.92>you <01:09.08>have <01:09.38>a <01:09.39>chain? <01:10.08>Does <01:10.26>it <01:10.40>lead <01:10.58>to <01:10.72>the <01:10.90>ground?
25+
[01:11.28]<01:11.28>Or <01:11.42>are <01:11.67>you <01:11.68>floating <01:12.10>in <01:12.26>the <01:12.42>heap, <01:12.92>waiting <01:13.32>to <01:13.52>be <01:13.72>found?
26+
[01:14.12]<01:14.12>One <01:14.36>broken <01:14.78>link, <01:15.36>and <01:15.52>the <01:15.66>logic <01:16.02>is <01:16.20>cold
27+
[01:16.54]<01:16.54>Retain <01:17.02>cycle <01:17.50>broken, <01:18.18>story <01:18.74>untold
28+
[01:19.30]<01:19.30>System <01:19.64>sweep <01:19.94>comes, <01:20.62>and <01:20.76>the <01:20.88>screen <01:21.26>goes <01:21.60>dark
29+
[01:22.18]<01:22.18>Collected <01:22.62>by <01:22.78>the <01:22.92>logic <01:23.30>of <01:23.46>the <01:23.62>ARC
30+
[01:24.94]<01:24.94>Years <01:25.24>go <01:25.46>by, <01:25.78>the <01:25.94>runtime <01:26.54>is <01:26.74>smooth
31+
[01:27.22]<01:27.22>Val <01:27.46>is <01:27.60>18 <01:28.22>now, <01:28.74>finding <01:29.20>her <01:29.36>groove
32+
[01:29.68]<01:29.68>She's <01:29.90>got <01:30.14>friends, <01:30.52>got <01:30.78>grades, <01:31.18>got <01:31.40>a <01:31.48>life <01:31.74>in <01:31.84>the <01:32.04>town
33+
[01:32.48]<01:32.48>Those <01:32.68>are <01:32.82>Weak <01:33.14>Pointers, <01:33.70>they <01:33.88>can't <01:34.16>hold <01:34.48>her <01:34.66>down
34+
[01:35.12]<01:35.12>See, <01:35.30>the <01:35.42>system <01:35.76>doesn't <01:36.16>care <01:36.48>if <01:36.62>the <01:36.74>neighbors <01:37.10>know <01:37.30>your <01:37.48>name
35+
[01:37.78]<01:37.78>If <01:37.96>the <01:38.10>legal <01:38.44>chain <01:38.72>breaks, <01:39.08>it's <01:39.26>the <01:39.46>end <01:39.62>of <01:39.74>the <01:39.94>game
36+
[01:40.40]<01:40.40>Luis <01:40.78>gets <01:41.14>sick, <01:41.72>the <01:41.86>exception <01:42.38>is <01:42.56>thrown
37+
[01:42.92]<01:42.92>A <01:43.04>fatal <01:43.44>error <01:43.76>in <01:43.88>the <01:44.08>body, <01:44.54>chilled <01:44.92>to <01:45.04>the <01:45.24>bone
38+
[01:45.57]<01:45.57>The <01:45.70>sponsor <01:46.14>shuts <01:46.46>down, <01:47.02>the <01:47.18>contract <01:47.84>is <01:48.00>void
39+
[01:48.48]<01:48.48>The <01:48.58>strong <01:48.98>pointer <01:49.32>vanishes, <01:49.82>the <01:49.94>link <01:50.16>is <01:50.28>destroyed
40+
[01:50.98]<01:50.98>Luis <01:51.32>passes <01:51.80>on. <01:52.00>Deallocated. <01:52.68>Gone
41+
[01:53.62]<01:53.62>But <01:53.78>the <01:53.88>tragedy <01:54.42>is <01:54.60>Val <01:54.94>has <01:55.12>to <01:55.28>carry <01:55.68>it <01:55.86>on
42+
[01:56.24]<01:56.24>See, <01:56.40>the <01:56.56>chain <01:56.84>was <01:57.06>through <01:57.24>him. <01:57.56>Now <01:57.72>the <01:57.92>parent <01:58.24>is <01:58.49>null
43+
[01:58.72]<01:58.72>The <01:58.84>system <01:59.20>runs <01:59.42>a <01:59.62>check, <02:00.18>and <02:00.34>the <02:00.46>silence <02:00.88>is <02:01.06>dull
44+
[02:01.48]<02:01.48>She's <02:01.72>a <02:01.82>Dangling <02:02.30>Pointer, <02:02.86>pointing <02:03.34>to <02:03.54>a <02:03.68>ghost
45+
[02:04.10]<02:04.10>Still <02:04.42>standing <02:04.84>in <02:05.00>the <02:05.14>memory, <02:05.62>but <02:05.76>she <02:06.00>lost <02:06.32>her <02:06.46>host
46+
[02:06.86]<02:06.86>No <02:07.10>path <02:07.44>to <02:07.60>the <02:07.78>Root, <02:08.14>no <02:08.29>line <02:08.64>to <02:08.74>the <02:08.92>crown
47+
[02:09.42]<02:09.42>Just <02:09.60>an <02:09.80>isolated <02:10.40>cycle <02:10.75>waiting <02:11.10>to <02:11.24>be <02:11.42>taken <02:11.80>down
48+
[02:12.22]<02:12.22>She <02:12.36>tries <02:12.66>to <02:12.82>re-link
49+
[02:13.80]<02:13.80>Find <02:13.96>a <02:14.08>new <02:14.26>address
50+
[02:15.04]<02:15.04>Panic <02:15.40>in <02:15.56>the <02:15.70>logic
51+
[02:16.32]<02:16.32>System <02:16.72>under <02:17.02>stress
52+
[02:17.54]<02:17.54>She <02:17.70>marries <02:18.08>for <02:18.18>the <02:18.32>paper? <02:18.68>No, <02:18.86>the <02:18.98>validation <02:19.70>fails
53+
[02:20.28]<02:20.28>Tries <02:20.54>to <02:20.66>get <02:20.86>a <02:20.96>visa? <02:21.28>But <02:21.48>the <02:21.62>latency <02:22.14>prevails
54+
[02:22.80]<02:22.80>The <02:22.94>Garbage <02:23.32>Collector <02:23.94>doesn't <02:24.30>sleep, <02:24.60>doesn't <02:25.00>weep
55+
[02:25.26]<02:25.26>It <02:25.42>just <02:25.58>scans <02:25.92>through <02:26.12>the <02:26.26>heap, <02:26.54>creeping <02:27.12>while <02:27.36>you <02:27.54>sleep
56+
[02:27.90]<02:27.90>It <02:28.02>traverses <02:28.56>the <02:28.70>graph
57+
[02:29.40]<02:29.40>It <02:29.54>looks <02:29.76>for <02:29.88>the <02:30.06>path
58+
[02:30.42]<02:30.42>If <02:30.52>Reachability <02:31.40>is <02:31.56>zero?
59+
[02:32.00]<02:32.00>Then <02:32.20>you <02:32.42>face <02:32.70>the <02:32.84>math
60+
[02:33.38]<02:33.38>The <02:33.52>knock <02:33.86>on <02:34.04>the <02:34.20>door <02:34.54>is <02:34.70>the <02:34.86>execution <02:35.54>line
61+
[02:35.81]<02:35.81>"0 <02:36.02>references <02:36.76>found." <02:37.38>You <02:37.52>ran <02:37.86>out <02:38.02>of <02:38.18>time
62+
[02:38.80]<02:38.80>They <02:38.96>don't <02:39.14>see <02:39.34>a <02:39.46>person, <02:39.98>they <02:40.16>just <02:40.40>see <02:40.62>a <02:40.78>leak
63+
[02:41.28]<02:41.28>A <02:41.38>block <02:41.64>of <02:41.78>memory <02:42.38>that <02:42.58>the <02:42.76>OS <02:43.08>doesn't <02:43.44>seek
64+
[02:43.72]<02:43.72>Val <02:44.02>screams <02:44.38>she <02:44.58>belongs, <02:45.18>she's <02:45.42>part <02:45.66>of <02:45.76>the <02:45.98>app
65+
[02:46.38]<02:46.38>But <02:46.52>the <02:46.70>source <02:47.06>code <02:47.26>is <02:47.38>rigid, <02:48.00>caught <02:48.28>in <02:48.38>the <02:48.54>trap
66+
[02:49.14]<02:49.14>They <02:49.30>sweep <02:49.58>her <02:49.72>away, <02:50.30>clear <02:50.52>the <02:50.66>memory <02:51.18>block
67+
[02:51.52]<02:51.52>Reclaim <02:51.98>the <02:52.12>resources, <02:52.94>turn <02:53.14>the <02:53.32>key <02:53.52>in <02:53.66>the <02:53.86>lock
68+
[02:54.28]<02:54.28>It's <02:54.46>efficient. <02:54.96>It's <02:55.18>clean. <02:55.78>It's <02:55.98>optimized <02:56.56>code
69+
[02:56.84]<02:56.84>But <02:56.96>it's <02:57.12>a <02:57.24>family <02:57.60>destroyed <02:58.28>on <02:58.40>the <02:58.58>side <02:58.82>of <02:58.94>the <02:59.10>road
70+
[02:59.56]<02:59.56>Now <02:59.70>the <02:59.86>space <03:00.10>is <03:00.22>marked <03:00.61>"Free," <03:01.24>ready <03:01.56>for <03:01.72>the <03:01.92>new
71+
[03:02.22]<03:02.22>While <03:02.56>Val <03:02.92>is <03:03.04>deleted <03:03.52>from <03:03.74>the <03:03.88>only <03:04.22>world <03:04.60>she <03:04.84>knew
72+
[03:06.18]<03:06.18>Yeah
73+
[03:07.36]<03:07.36>Just <03:07.52>bits <03:07.72>and <03:07.90>bytes
74+
[03:09.34]<03:09.34>Just <03:09.54>logic <03:09.98>gates
75+
[03:11.78]<03:11.78>Zeroes <03:12.26>and <03:12.48>ones
76+
[03:13.08]<03:13.08>Memory <03:13.56>reclaimed. <03:14.12>System <03:14.56>stable. <03:15.08>Ready <03:15.38>for <03:15.56>next <03:15.92>allocation

system_prune/system_prune.mp3

4.92 MB
Binary file not shown.

system_prune/system_prune_test.cc

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
#include "gtest/gtest.h"
2+
#include <functional>
3+
#include <memory>
4+
#include <string>
5+
#include <vector>
6+
7+
void system_log(const std::string &message) {
8+
std::cout << "[SYSTEM] " << message << std::endl;
9+
}
10+
11+
class Person {
12+
public:
13+
bool is_alive = true;
14+
const std::string name;
15+
std::vector<std::shared_ptr<Person>> h4_dependents;
16+
std::vector<std::weak_ptr<Person>> friends;
17+
18+
Person(const std::string &name) : name(name) {
19+
system_log("Allocating " + name);
20+
}
21+
22+
void bringChild(std::shared_ptr<Person> child) {
23+
this->log("Bringing child " + child->name);
24+
this->h4_dependents.push_back(child);
25+
}
26+
27+
void befriend(std::shared_ptr<Person> bff) {
28+
this->log("Befriending " + bff->name);
29+
this->friends.push_back(bff);
30+
}
31+
32+
void log(const std::string &message) {
33+
std::cout << "[" << name << "] " << message << std::endl;
34+
}
35+
36+
void work() {
37+
if (is_alive) {
38+
this->log("Working");
39+
} else {
40+
throw std::runtime_error("Fatal error in the body");
41+
}
42+
}
43+
44+
~Person() {
45+
if (is_alive) {
46+
system_log("Deporting " + name);
47+
}
48+
}
49+
};
50+
51+
class Employer : public Person {
52+
public:
53+
Employer(const std::string &name) : Person(name) {}
54+
std::vector<std::shared_ptr<Person>> h1b_employees;
55+
56+
void sponsor(std::shared_ptr<Person> employee) {
57+
this->log("Sponsoring " + employee->name);
58+
h1b_employees.push_back(employee);
59+
}
60+
61+
void manage() {
62+
for (auto it = h1b_employees.begin(); it != h1b_employees.end(); ++it) {
63+
try {
64+
(*it)->work();
65+
} catch (const std::exception &e) {
66+
(*it)->log(e.what());
67+
log("Employee stopped working: voiding contract");
68+
h1b_employees.erase(it);
69+
--it;
70+
}
71+
}
72+
}
73+
};
74+
75+
std::vector<std::shared_ptr<Person>> citizens;
76+
77+
TEST(SystemPrune, Root) {
78+
std::weak_ptr<Employer> boss;
79+
std::weak_ptr<Person> luis, val, ruth;
80+
{
81+
auto boss_tmp = std::make_shared<Employer>("Boss");
82+
auto ruth_tmp = std::make_shared<Person>("Ruth");
83+
citizens = {boss_tmp, ruth_tmp};
84+
boss = boss_tmp;
85+
ruth = ruth_tmp;
86+
}
87+
88+
ASSERT_FALSE(boss.expired());
89+
ASSERT_FALSE(ruth.expired());
90+
91+
{
92+
auto luis_tmp = std::make_shared<Person>("Luis");
93+
boss.lock()->sponsor(luis_tmp);
94+
auto val_tmp = std::make_shared<Person>("Val");
95+
luis_tmp->bringChild(val_tmp);
96+
ruth.lock()->befriend(val_tmp);
97+
luis = luis_tmp;
98+
val = val_tmp;
99+
}
100+
101+
ASSERT_FALSE(luis.expired());
102+
ASSERT_FALSE(val.expired());
103+
104+
boss.lock()->manage();
105+
luis.lock()->is_alive = false;
106+
boss.lock()->manage();
107+
108+
ASSERT_TRUE(luis.expired());
109+
ASSERT_TRUE(val.expired());
110+
111+
ruth.lock()->log("My best friend is " + ruth.lock()->friends[0].lock()->name);
112+
}

0 commit comments

Comments
 (0)