Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / UnSafeCharBuffer.cs / 1305376 / UnSafeCharBuffer.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: UnSafeBuffer ** ** Purpose: A class to detect incorrect usage of UnSafeBuffer ** ** ===========================================================*/ namespace System { using System.Diagnostics; using System.Diagnostics.Contracts; unsafe internal struct UnSafeCharBuffer{ char * m_buffer; int m_totalSize; int m_length; [System.Security.SecurityCritical] // auto-generated public UnSafeCharBuffer( char *buffer, int bufferSize) { Contract.Assert( buffer != null, "buffer pointer can't be null." ); Contract.Assert( bufferSize >= 0, "buffer size can't be negative." ); m_buffer = buffer; m_totalSize = bufferSize; m_length = 0; } [System.Security.SecuritySafeCritical] // auto-generated public void AppendString(string stringToAppend) { if( String.IsNullOrEmpty( stringToAppend ) ) { return; } if ( (m_totalSize - m_length) < stringToAppend.Length ) { throw new IndexOutOfRangeException(); } fixed( char* pointerToString = stringToAppend ) { Buffer.memcpyimpl( (byte *) pointerToString, (byte*) (m_buffer + m_length), stringToAppend.Length * sizeof(char)); } m_length += stringToAppend.Length; Contract.Assert(m_length <= m_totalSize, "Buffer has been overflowed!"); } public int Length { get { return m_length; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: UnSafeBuffer ** ** Purpose: A class to detect incorrect usage of UnSafeBuffer ** ** ===========================================================*/ namespace System { using System.Diagnostics; using System.Diagnostics.Contracts; unsafe internal struct UnSafeCharBuffer{ char * m_buffer; int m_totalSize; int m_length; [System.Security.SecurityCritical] // auto-generated public UnSafeCharBuffer( char *buffer, int bufferSize) { Contract.Assert( buffer != null, "buffer pointer can't be null." ); Contract.Assert( bufferSize >= 0, "buffer size can't be negative." ); m_buffer = buffer; m_totalSize = bufferSize; m_length = 0; } [System.Security.SecuritySafeCritical] // auto-generated public void AppendString(string stringToAppend) { if( String.IsNullOrEmpty( stringToAppend ) ) { return; } if ( (m_totalSize - m_length) < stringToAppend.Length ) { throw new IndexOutOfRangeException(); } fixed( char* pointerToString = stringToAppend ) { Buffer.memcpyimpl( (byte *) pointerToString, (byte*) (m_buffer + m_length), stringToAppend.Length * sizeof(char)); } m_length += stringToAppend.Length; Contract.Assert(m_length <= m_totalSize, "Buffer has been overflowed!"); } public int Length { get { return m_length; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HwndSourceKeyboardInputSite.cs
- UpWmlPageAdapter.cs
- TextRangeEdit.cs
- DataGridViewComboBoxEditingControl.cs
- ColumnMapVisitor.cs
- ToolStripDropDownClosedEventArgs.cs
- ListSortDescriptionCollection.cs
- WindowsStartMenu.cs
- CacheAxisQuery.cs
- EventWaitHandleSecurity.cs
- ManagedFilter.cs
- SystemUdpStatistics.cs
- ChannelTokenTypeConverter.cs
- OrderedEnumerableRowCollection.cs
- documentsequencetextview.cs
- TemplatedWizardStep.cs
- httpstaticobjectscollection.cs
- XsdDuration.cs
- Parser.cs
- ConfigXmlWhitespace.cs
- ArraySet.cs
- DeviceSpecificChoice.cs
- TypeSystem.cs
- GeneralTransform2DTo3DTo2D.cs
- DefaultValueConverter.cs
- StatusBarPanelClickEvent.cs
- Inline.cs
- UnionExpr.cs
- CommonObjectSecurity.cs
- DataServiceStreamResponse.cs
- AstTree.cs
- ADMembershipProvider.cs
- HtmlLinkAdapter.cs
- ConnectionManagementSection.cs
- TextureBrush.cs
- Error.cs
- TableItemProviderWrapper.cs
- MeasureItemEvent.cs
- PolicyChain.cs
- IDispatchConstantAttribute.cs
- unsafenativemethodsother.cs
- TextEmbeddedObject.cs
- PeerReferralPolicy.cs
- TypedServiceOperationListItem.cs
- HyperLinkDataBindingHandler.cs
- ScriptReferenceEventArgs.cs
- RootBuilder.cs
- SmiEventSink_Default.cs
- COM2IPerPropertyBrowsingHandler.cs
- HelpEvent.cs
- MemberProjectedSlot.cs
- infer.cs
- ZoneMembershipCondition.cs
- Command.cs
- CultureTable.cs
- MouseOverProperty.cs
- MaxSessionCountExceededException.cs
- InternalConfirm.cs
- SafeNativeMethods.cs
- WmpBitmapDecoder.cs
- WorkflowMarkupElementEventArgs.cs
- DataGridViewHeaderCell.cs
- SqlDataSource.cs
- MetabaseSettingsIis7.cs
- ToolStripDropDownItem.cs
- ScriptManagerProxy.cs
- PageContentAsyncResult.cs
- StorageSetMapping.cs
- MethodToken.cs
- CodePrimitiveExpression.cs
- FixedSOMElement.cs
- TransformProviderWrapper.cs
- StructuredProperty.cs
- Control.cs
- EventHandlers.cs
- ElementFactory.cs
- SmiEventSink_DeferedProcessing.cs
- TraversalRequest.cs
- TransformerConfigurationWizardBase.cs
- AxisAngleRotation3D.cs
- EmbossBitmapEffect.cs
- RelationshipEndMember.cs
- TextTreeRootNode.cs
- CaseExpr.cs
- DataTemplateSelector.cs
- VirtualPath.cs
- WebReference.cs
- GeneralTransform2DTo3DTo2D.cs
- DataTableReaderListener.cs
- ExtensionWindowHeader.cs
- StorageEntitySetMapping.cs
- SafeCryptContextHandle.cs
- StandardBindingElementCollection.cs
- WindowCollection.cs
- TokenCreationException.cs
- AstTree.cs
- TextBlock.cs
- HtmlInputReset.cs
- InfiniteIntConverter.cs
- FontDriver.cs