Doesn't it mean if initial value is zero use zero instead? 
Wouldn't simple ``*um->value = um->initial_value;`` be enough?