Example of code to reproduce:
dt1 <- fread("V1 V2 V3
x b;c;d 1
y d;ef 2
z d;ef 3
m tmp 4
n tmp 5")
dt1[4, V2:=''] # this record will be lost because V2 value is empty string
dt1[5, V2:=NA_character_] # NA value is processed correctly
cSplit(dt1, splitCols = 'V2', sep = ';', direction = 'long')
as you can see, record 4 (where V2=='') is lost.