// Token: 0x060012C4 RID: 4804 RVA: 0x0006D934 File Offset: 0x0006BB34 private static void SkipProperty(PropTag propTag, byte[] recordBuffer, ref int propertyOffset) { int i = 1; int num = 0; if (propTag.IsMultiValued()) { DiffFileGenerator.GetV4IntegerValue(recordBuffer, ref propertyOffset, out i); } while (i > 0) { PropType propType = propTag.ValueType() & (PropType)(-4097); if (propType <= PropType.Boolean) { if (propType != PropType.Int && propType != PropType.Boolean) { goto IL_69; } DiffFileGenerator.GetV4IntegerValue(recordBuffer, ref propertyOffset, out num); } else { switch (propType) { case PropType.AnsiString: case PropType.String: while (recordBuffer[propertyOffset++] != 0) { } break; default: if (propType != PropType.Binary) { goto IL_69; } goto IL_69; } } IL_78: i--; continue; IL_69: DiffFileGenerator.GetV4IntegerValue(recordBuffer, ref propertyOffset, out num); propertyOffset += num; goto IL_78; } }
// Token: 0x060012C5 RID: 4805 RVA: 0x0006D9C4 File Offset: 0x0006BBC4 private static object GetPropertyValue(PropTag propTag, byte[] recordBuffer, ref int propertyOffset, bool isFromOldFile) { PropType propType = propTag.ValueType() & (PropType)(-4097); object result; switch (propType) { case PropType.AnsiString: case PropType.String: { int num = propertyOffset; while (recordBuffer[propertyOffset] != 0) { propertyOffset++; } result = Encoding.UTF8.GetString(recordBuffer, num, propertyOffset - num); break; } default: { if (propType != PropType.Binary) { throw new NotSupportedException(string.Format("GetProperty doesn't support property type {0} now", propTag.ValueType())); } int num2; DiffFileGenerator.GetV4IntegerValue(recordBuffer, ref propertyOffset, out num2); if (num2 <= 0) { OABLogger.LogRecord(TraceType.FatalTrace, "Invalid binary property data for tag {0} from {1} file . The offset is {2}. The binary blob is {3}", new object[] { propTag.ToString(), isFromOldFile ? "old" : "new", propertyOffset, BitConverter.ToString(recordBuffer) }); throw new InvalidDataException(string.Format("Invalid binary property data for tag {0}", propTag.ToString())); } byte[] array = new byte[num2]; Array.Copy(recordBuffer, propertyOffset, array, 0, num2); propertyOffset += num2; result = array; break; } } return(result); }