diff -Naur openchange-0.10-NOMAD/libmapi//IMessage.c openchange-0.10-NOMAD-kirurgs/libmapi//IMessage.c
--- openchange-0.10-NOMAD/libmapi//IMessage.c 2010-08-27 13:22:25.000000000 +0300
+++ openchange-0.10-NOMAD-kirurgs/libmapi//IMessage.c 2011-03-31 12:52:09.000000000 +0300
@@ -728,9 +728,8 @@
* append here property tags that can be fetched with
* ResolveNames but shouldn't be included in ModifyRecipients rows
*/
- request.properties = get_MAPITAGS_SRow(mem_ctx, &SRowSet->aRow[0]);
- count = SRowSet->aRow[0].cValues - 1;
- request.prop_count = MAPITAGS_delete_entries(request.properties, count, 17,
+ request.properties = get_MAPITAGS_SRow(mem_ctx, &SRowSet->aRow[0], &count);
+ request.prop_count = MAPITAGS_delete_entries(request.properties, count, 19,
PR_ENTRYID,
PR_DISPLAY_NAME,
PR_DISPLAY_NAME_UNICODE,
@@ -747,7 +746,9 @@
PR_ADDRTYPE_UNICODE,
PR_ADDRTYPE_ERROR,
PR_SEND_INTERNET_ENCODING,
- PR_SEND_INTERNET_ENCODING_ERROR);
+ PR_SEND_INTERNET_ENCODING_ERROR,
+ PR_SEND_RICH_INFO,
+ PR_SEND_RICH_INFO_ERROR);
size += request.prop_count * sizeof(uint32_t);
request.cValues = SRowSet->cRows;
size += sizeof(uint16_t);
@@ -804,7 +805,7 @@
break;
case (0x208):
RecipientRow->EmailAddress.lpszW = (const char *) find_SPropValue_data(aRow, PR_SMTP_ADDRESS_UNICODE);
- size += strlen(RecipientRow->EmailAddress.lpszW) * 2 + 2;
+ size += get_utf8_utf16_conv_length(RecipientRow->EmailAddress.lpszW);
break;
default:
break;
@@ -818,7 +819,7 @@
break;
case (0x210):
RecipientRow->DisplayName.lpszW = (const char *) find_SPropValue_data(aRow, PR_DISPLAY_NAME_UNICODE);
- size += strlen(RecipientRow->DisplayName.lpszW) * 2 + 2;
+ size += get_utf8_utf16_conv_length(RecipientRow->DisplayName.lpszW);
break;
default:
break;
@@ -832,7 +833,7 @@
break;
case (0x220):
RecipientRow->TransmittableDisplayName.lpszW = (const char *) find_SPropValue_data(aRow, PR_TRANSMITTABLE_DISPLAY_NAME_UNICODE);
- size += strlen(RecipientRow->TransmittableDisplayName.lpszW) * 2 + 2;
+ size += get_utf8_utf16_conv_length(RecipientRow->TransmittableDisplayName.lpszW);
break;
default:
break;
@@ -847,7 +848,7 @@
break;
case (0x600):
RecipientRow->SimpleDisplayName.lpszW = (const char *) find_SPropValue_data(aRow, PR_7BIT_DISPLAY_NAME_UNICODE);
- size += strlen(RecipientRow->SimpleDisplayName.lpszW) * 2 + 2;
+ size += get_utf8_utf16_conv_length(RecipientRow->SimpleDisplayName.lpszW);
break;
default:
break;
diff -Naur openchange-0.10-NOMAD/libmapi//libmapi_private.h openchange-0.10-NOMAD-kirurgs/libmapi//libmapi_private.h
--- openchange-0.10-NOMAD/libmapi//libmapi_private.h 2010-08-27 13:22:25.000000000 +0300
+++ openchange-0.10-NOMAD-kirurgs/libmapi//libmapi_private.h 2011-03-31 12:52:09.000000000 +0300
@@ -106,7 +106,8 @@
enum MAPISTATUS mapi_object_bookmark_find(mapi_object_t *, uint32_t,struct SBinary_short *);
/* The following private definitions come from libmapi/property.c */
-enum MAPITAGS *get_MAPITAGS_SRow(TALLOC_CTX *, struct SRow *);
+/*enum MAPITAGS *get_MAPITAGS_SRow(TALLOC_CTX *, struct SRow *);*/
+enum MAPITAGS *get_MAPITAGS_SRow(TALLOC_CTX *, struct SRow *, uint32_t *);
uint32_t MAPITAGS_delete_entries(enum MAPITAGS *, uint32_t, uint32_t, ...);
size_t get_utf8_utf16_conv_length(const char *);
diff -Naur openchange-0.10-NOMAD/libmapi//property.c openchange-0.10-NOMAD-kirurgs/libmapi//property.c
--- openchange-0.10-NOMAD/libmapi//property.c 2010-09-16 11:15:34.000000000 +0300
+++ openchange-0.10-NOMAD-kirurgs/libmapi//property.c 2011-03-31 12:52:09.000000000 +0300
@@ -183,7 +183,9 @@
Create a MAPITAGS array from a SRow entry
*/
-enum MAPITAGS *get_MAPITAGS_SRow(TALLOC_CTX *mem_ctx, struct SRow *aRow)
+enum MAPITAGS *get_MAPITAGS_SRow(TALLOC_CTX *mem_ctx,
+ struct SRow *aRow,
+ uint32_t *actual_count)
{
enum MAPITAGS *mapitags;
uint32_t count, idx;
@@ -197,6 +199,8 @@
}
}
mapitags[idx] = 0;
+ *actual_count = idx;
+
return mapitags;
}