@@ -125,8 +125,12 @@ bool MCDeployFileOpen(MCStringRef p_path, intenum_t p_mode, MCDeployFileRef& r_f
125125
126126 if (MCStringIsEmpty (p_path))
127127 return false ;
128-
129- IO_handle t_handle = MCS_open (p_path, p_mode, false , false , 0 );
128+
129+ IO_handle t_handle ;
130+ if (p_mode == kMCSOpenFileModeCreate )
131+ t_handle = MCS_deploy_open (p_path, p_mode);
132+ else
133+ t_handle = MCS_open (p_path, p_mode, false , false , 0 );
130134
131135 t_success = (t_handle != nil);
132136
@@ -175,15 +179,18 @@ bool MCDeployFileCopy(MCDeployFileRef p_dst, uint32_t p_at, MCDeployFileRef p_sr
175179{
176180 if (MCS_seek_set (p_src, p_from) != IO_NORMAL)
177181 return MCDeployThrow (kMCDeployErrorBadRead );
178-
182+
183+ if (MCS_seek_set (p_dst, p_at) != IO_NORMAL)
184+ return MCDeployThrow (kMCDeployErrorBadWrite );
185+
179186 while (p_amount > 0 )
180187 {
181188 char t_buffer[4096 ];
182189 uint32_t t_size;
183190 t_size = MCU_min (4096U , p_amount);
184191 if (MCS_readfixed (t_buffer, t_size, p_src) != IO_NORMAL)
185192 return MCDeployThrow (kMCDeployErrorBadRead );
186- if (MCS_writeat (t_buffer, t_size, p_at , p_dst) != IO_NORMAL)
193+ if (MCS_write (t_buffer, t_size, 1 , p_dst) != IO_NORMAL)
187194 return MCDeployThrow (kMCDeployErrorBadWrite );
188195 p_amount -= t_size;
189196 }
@@ -193,9 +200,12 @@ bool MCDeployFileCopy(MCDeployFileRef p_dst, uint32_t p_at, MCDeployFileRef p_sr
193200
194201bool MCDeployFileWriteAt (MCDeployFileRef p_dst, const void *p_buffer, uint32_t p_size, uint32_t p_at)
195202{
196- if (MCS_writeat (p_buffer, p_size, p_at, p_dst ) != IO_NORMAL)
203+ if (MCS_seek_set (p_dst, p_at) != IO_NORMAL)
197204 return MCDeployThrow (kMCDeployErrorBadWrite );
198-
205+
206+ if (MCS_write (p_buffer, p_size, 1 , p_dst) != IO_NORMAL)
207+ return MCDeployThrow (kMCDeployErrorBadWrite );
208+
199209 return true ;
200210}
201211
0 commit comments