@@ -2249,10 +2249,20 @@ OGRErr OGRMiraMonLayer::TranslateFieldsValuesToMM(OGRFeature *poFeature)
2249
2249
&(hMMFeature.pRecords [nIRecord].pField ),
2250
2250
&hMMFeature.pRecords [nIRecord].nMaxField ,
2251
2251
hMMFeature.pRecords [nIRecord].nNumField ,
2252
- MM_INC_NUMBER_OF_FIELDS,
2252
+ (nIRecord == 0 )
2253
+ ? MM_INC_NUMBER_OF_FIELDS
2254
+ : hMMFeature.pRecords [nIRecord - 1 ].nMaxField ,
2253
2255
hMMFeature.pRecords [nIRecord].nNumField ))
2254
2256
return OGRERR_NOT_ENOUGH_MEMORY;
2255
2257
2258
+ if (nIRecord > 0 )
2259
+ {
2260
+ // The number of fields of this new record is the same as the
2261
+ // last one
2262
+ hMMFeature.pRecords [nIRecord].nNumField =
2263
+ hMMFeature.pRecords [nIRecord - 1 ].nNumField ;
2264
+ }
2265
+
2256
2266
if (phMiraMonLayer->nCharSet != MM_JOC_CARAC_UTF8_DBF)
2257
2267
{
2258
2268
// MiraMon encoding is ISO 8859-1 (Latin1) -> Recode from UTF-8
@@ -2311,10 +2321,20 @@ OGRErr OGRMiraMonLayer::TranslateFieldsValuesToMM(OGRFeature *poFeature)
2311
2321
&(hMMFeature.pRecords [nIRecord].pField ),
2312
2322
&hMMFeature.pRecords [nIRecord].nMaxField ,
2313
2323
hMMFeature.pRecords [nIRecord].nNumField ,
2314
- MM_INC_NUMBER_OF_FIELDS,
2324
+ (nIRecord == 0 )
2325
+ ? MM_INC_NUMBER_OF_FIELDS
2326
+ : hMMFeature.pRecords [nIRecord - 1 ].nMaxField ,
2315
2327
hMMFeature.pRecords [nIRecord].nNumField ))
2316
2328
return OGRERR_NOT_ENOUGH_MEMORY;
2317
2329
2330
+ if (nIRecord > 0 )
2331
+ {
2332
+ // The number of fields of this new record is the same as the
2333
+ // last one
2334
+ hMMFeature.pRecords [nIRecord].nNumField =
2335
+ hMMFeature.pRecords [nIRecord - 1 ].nNumField ;
2336
+ }
2337
+
2318
2338
if (eFSType == OFSTBoolean)
2319
2339
{
2320
2340
if (panValues[nIRecord] == 1 )
@@ -2382,10 +2402,20 @@ OGRErr OGRMiraMonLayer::TranslateFieldsValuesToMM(OGRFeature *poFeature)
2382
2402
&(hMMFeature.pRecords [nIRecord].pField ),
2383
2403
&hMMFeature.pRecords [nIRecord].nMaxField ,
2384
2404
hMMFeature.pRecords [nIRecord].nNumField ,
2385
- MM_INC_NUMBER_OF_FIELDS,
2405
+ (nIRecord == 0 )
2406
+ ? MM_INC_NUMBER_OF_FIELDS
2407
+ : hMMFeature.pRecords [nIRecord - 1 ].nMaxField ,
2386
2408
hMMFeature.pRecords [nIRecord].nNumField ))
2387
2409
return OGRERR_NOT_ENOUGH_MEMORY;
2388
2410
2411
+ if (nIRecord > 0 )
2412
+ {
2413
+ // The number of fields of this new record is the same as the
2414
+ // last one
2415
+ hMMFeature.pRecords [nIRecord].nNumField =
2416
+ hMMFeature.pRecords [nIRecord - 1 ].nNumField ;
2417
+ }
2418
+
2389
2419
hMMFeature.pRecords [nIRecord].pField [iField].iValue =
2390
2420
panValues[nIRecord];
2391
2421
@@ -2425,10 +2455,20 @@ OGRErr OGRMiraMonLayer::TranslateFieldsValuesToMM(OGRFeature *poFeature)
2425
2455
&(hMMFeature.pRecords [nIRecord].pField ),
2426
2456
&hMMFeature.pRecords [nIRecord].nMaxField ,
2427
2457
hMMFeature.pRecords [nIRecord].nNumField ,
2428
- MM_INC_NUMBER_OF_FIELDS,
2458
+ (nIRecord == 0 )
2459
+ ? MM_INC_NUMBER_OF_FIELDS
2460
+ : hMMFeature.pRecords [nIRecord - 1 ].nMaxField ,
2429
2461
hMMFeature.pRecords [nIRecord].nNumField ))
2430
2462
return OGRERR_NOT_ENOUGH_MEMORY;
2431
2463
2464
+ if (nIRecord > 0 )
2465
+ {
2466
+ // The number of fields of this new record is the same as the
2467
+ // last one
2468
+ hMMFeature.pRecords [nIRecord].nNumField =
2469
+ hMMFeature.pRecords [nIRecord - 1 ].nNumField ;
2470
+ }
2471
+
2432
2472
char szChain[MAX_SIZE_OF_FIELD_NUMBER_WITH_MINUS];
2433
2473
MM_SprintfDoubleSignifFigures (
2434
2474
szChain, sizeof (szChain),
0 commit comments